Moje pytanie polega na zsumowaniu wartości w wielu kolumnach ramki danych i utworzeniu nowej kolumny odpowiadającej temu podsumowaniu za pomocą dplyr
. Wpisy danych w kolumnach są binarne (0,1). Myślę o wierszowym odpowiedniku funkcji summarise_each
lub mutate_each
funkcji dplyr
. Poniżej znajduje się minimalny przykład ramki danych:
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
Przydałoby się coś takiego:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
ale wymagałoby to wypisania nazw każdej z kolumn. Mam jakieś 50 kolumn. Ponadto nazwy kolumn zmieniają się przy różnych iteracjach pętli, w której chcę zaimplementować tę operację, dlatego chciałbym spróbować uniknąć konieczności nadawania jakichkolwiek nazw kolumn.
Jak mogę to zrobić najskuteczniej? Każda pomoc byłaby bardzo mile widziana.
dplyr
? Dlaczego nie po prostu prostydf$sumrow <- rowSums(df, na.rm = TRUE)
z podstawy R? Lubdf$sumrow <- Reduce(`+`, df)
jeśli chcesz dokładnie odtworzyć to, co zrobiłeśdplyr
.