Meine Frage besteht darin, Werte über mehrere Spalten eines Datenrahmens zu summieren und eine neue Spalte zu erstellen, die dieser Summierung entspricht dplyr
. Die Dateneinträge in den Spalten sind binär (0,1). Ich denke an ein zeilenweises Analogon der summarise_each
oder mutate_each
Funktion von dplyr
. Unten finden Sie ein minimales Beispiel für den Datenrahmen:
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
Ich könnte so etwas gebrauchen wie:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
Dies würde jedoch das Aufschreiben der Namen jeder der Spalten beinhalten. Ich habe gerne 50 Spalten. Darüber hinaus ändern sich die Spaltennamen bei verschiedenen Iterationen der Schleife, in der ich diese Operation implementieren möchte, sodass ich versuchen möchte, keine Spaltennamen anzugeben.
Wie kann ich das am effizientesten machen? Jede Unterstützung wäre sehr dankbar.
dplyr
? Warum nicht einfach eine einfachedf$sumrow <- rowSums(df, na.rm = TRUE)
von Basis R? Oderdf$sumrow <- Reduce(`+`, df)
wenn Sie genau das replizieren möchten, was Sie getan habendplyr
.