Pertanyaan saya melibatkan penjumlahan nilai di beberapa kolom dari bingkai data dan membuat kolom baru yang sesuai dengan penjumlahan ini menggunakan dplyr
. Entri data di kolom adalah biner (0,1). Saya sedang memikirkan analog bijak darisummarise_each
atau mutate_each
fungsi dplyr
. Di bawah ini adalah contoh minimal dari bingkai data:
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
Saya bisa menggunakan sesuatu seperti:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
tetapi ini akan melibatkan penulisan nama masing-masing kolom. Saya memiliki 50 kolom. Selain itu, nama kolom berubah pada iterasi yang berbeda dari loop di mana saya ingin menerapkan operasi ini, jadi saya ingin mencoba menghindari keharusan memberikan nama kolom apa pun.
Bagaimana saya bisa melakukannya dengan paling efisien? Bantuan apa pun akan sangat dihargai.
dplyr
? Mengapa tidak hanya yang sederhanadf$sumrow <- rowSums(df, na.rm = TRUE)
dari basis R? Ataudf$sumrow <- Reduce(`+`, df)
jika Anda ingin meniru persis hal yang Anda lakukan dengandplyr
.