Câu hỏi của tôi liên quan đến việc tổng hợp các giá trị trên nhiều cột của khung dữ liệu và tạo một cột mới tương ứng với phép tổng kết này bằng cách sử dụng dplyr
. Các mục dữ liệu trong các cột là nhị phân (0,1). Tôi đang nghĩ về một tương tự khôn ngoan của hàng của summarise_each
hoặc mutate_each
chức năng của dplyr
. Dưới đây là một ví dụ tối thiểu về khung dữ liệu:
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
Tôi có thể sử dụng một cái gì đó như:
df <- df %>% mutate(sumrow= x1 + x2 + x3 + x4 + x5)
nhưng điều này sẽ liên quan đến việc viết ra tên của từng cột. Tôi có 50 cột. Ngoài ra, tên cột thay đổi ở các lần lặp khác nhau của vòng lặp mà tôi muốn thực hiện thao tác này, vì vậy tôi muốn tránh phải đặt bất kỳ tên cột nào.
Làm thế nào tôi có thể làm điều đó hiệu quả nhất? Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá cao.
dplyr
? Tại sao không chỉ là một đơn giảndf$sumrow <- rowSums(df, na.rm = TRUE)
từ cơ sở R? Hoặcdf$sumrow <- Reduce(`+`, df)
nếu bạn muốn sao chép chính xác những gì bạn đã làm vớidplyr
.