Mi pregunta implica sumar valores en múltiples columnas de un marco de datos y crear una nueva columna correspondiente a esta suma usando dplyr
. Las entradas de datos en las columnas son binarias (0,1). Estoy pensando en un análogo de fila de la función summarise_each
o mutate_each
de dplyr
. A continuación se muestra un ejemplo mínimo del marco de datos:
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
Podría usar algo como:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
pero esto implicaría escribir los nombres de cada una de las columnas. Tengo como 50 columnas. Además, los nombres de las columnas cambian en diferentes iteraciones del ciclo en el que quiero implementar esta operación, así que me gustaría intentar evitar tener que dar nombres de columna.
¿Cómo puedo hacer eso de la manera más eficiente? Cualquier ayuda será muy apreciada.
dplyr
? ¿Por qué no simplemente un simpledf$sumrow <- rowSums(df, na.rm = TRUE)
de base R? Odf$sumrow <- Reduce(`+`, df)
si quieres replicar exactamente lo que hicistedplyr
.