我正在尝试实现一种有条件的rowSums
。
我有一个数据框,其中包含四列包含1和0,另外一个变量表示应该添加哪些列以计算行总数。
例如:
df <- matrix(rbinom(40, 1, 0.5), ncol = 4)
df <- as.data.frame.matrix(df)
df$group <- sample(c('12', '123', '1234'), 10, replace = T)
如果组是
12
,则应添加列V1:V2,如果是123
,则应添加列V1:V3,如果是1234
,则应添加列V1:V4。我尝试了一种劳动密集型的方法:
df$total12 <- rowSums(df[,c('V1', 'V2')])
df$total123 <- rowSums(df[,c('V1', 'V2', 'V3')])
df$total1234 <- rowSums(df[,c('V1', 'V2', 'V3', 'V4')])
df$total <- ifelse(df$group == '12', df$total12,
ifelse(df$group == '123', df$total123, df$total1234))
有没有更简单的方法来完成这个任务?