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_eachlub mutate_eachfunkcji 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.