Ma question consiste à additionner les valeurs sur plusieurs colonnes d'un bloc de données et à créer une nouvelle colonne correspondant à cette somme à l'aide de dplyr
. Les entrées de données dans les colonnes sont binaires (0,1). Je pense à un analogue en ligne de la fonction summarise_each
ou mutate_each
de dplyr
. Voici un exemple minimal de la trame de données:
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
Je pourrais utiliser quelque chose comme:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
mais cela impliquerait d'écrire les noms de chacune des colonnes. J'ai environ 50 colonnes. De plus, les noms de colonnes changent à différentes itérations de la boucle dans laquelle je veux implémenter cette opération, je voudrais donc essayer d'éviter d'avoir à donner des noms de colonne.
Comment puis-je le faire le plus efficacement possible? Toute assistance sera grandement appréciée.
dplyr
? Pourquoi pas juste un simple àdf$sumrow <- rowSums(df, na.rm = TRUE)
partir de la base R? Oudf$sumrow <- Reduce(`+`, df)
si vous souhaitez reproduire exactement ce que vous avez faitdplyr
.