Minha pergunta envolve somar valores em várias colunas de um quadro de dados e criar uma nova coluna correspondente a esse somatório usando dplyr
. As entradas de dados nas colunas são binárias (0,1). Estou pensando em um análogo de linha da função summarise_each
ou mutate_each
de dplyr
. Abaixo está um exemplo mínimo do quadro de dados:
library(dplyr)
df=data.frame(
x1=c(1,0,0,NA,0,1,1,NA,0,1),
x2=c(1,1,NA,1,1,0,NA,NA,0,1),
x3=c(0,1,0,1,1,0,NA,NA,0,1),
x4=c(1,0,NA,1,0,0,NA,0,0,1),
x5=c(1,1,NA,1,1,1,NA,1,0,1))
> df
x1 x2 x3 x4 x5
1 1 1 0 1 1
2 0 1 1 0 1
3 0 NA 0 NA NA
4 NA 1 1 1 1
5 0 1 1 0 1
6 1 0 0 0 1
7 1 NA NA NA NA
8 NA NA NA 0 1
9 0 0 0 0 0
10 1 1 1 1 1
Eu poderia usar algo como:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
mas isso envolveria escrever os nomes de cada uma das colunas. Eu tenho cerca de 50 colunas. Além disso, os nomes das colunas mudam em diferentes iterações do loop em que desejo implementar esta operação, portanto, gostaria de evitar ter de fornecer nomes de coluna.
Como posso fazer isso com mais eficiência? Qualquer ajuda seria muito apreciada.
dplyr
? Por que não apenas um simplesdf$sumrow <- rowSums(df, na.rm = TRUE)
da base R? Oudf$sumrow <- Reduce(`+`, df)
se você deseja replicar exatamente o que você fezdplyr
.