【发布时间】:2014-04-29 13:27:38
【问题描述】:
我有一个如下所示的数据框,其中每一行是一个人,每一列是一个编码为 0,1 的答案:
data<-as.data.frame(cbind('answer1' = c(0,0,1,0,0,0),
'answer2' = c(1,1,1,1,1,0),
'answer3' = c(1,1,1,0,1,1),
'answer4' = c(1,0,0,0,0,0)))
我想做的是为每个人计算仅某些列中“1”的数量,并按列名而不是数字来引用这些列。在这种情况下,“只计算 1 在“answer1”和“answer3”中出现的次数。”所以我想最终得到一些看起来像这样的东西:
data<-as.data.frame(cbind('answer1' = c(0,0,1,0,0,0),
'answer2' = c(1,1,1,1,1,0),
'answer3' = c(1,1,1,0,1,1),
'answer4' = c(1,0,0,0,0,0),
'sum' = c(1,1,2,0,1,1)))
我搜索并发现了许多相关问题,但没有一个解决仅计算某些列并按名称引用这些列的具体问题。我已经尝试过 rowSums 并且可以使用它对所有列求和,但似乎无法让它只选择某些列。我敢肯定有一个非常简单的答案,但它躲避我......谢谢!
编辑:我需要实际计算“1”的实例数,而不是简单地对两列求和,因为实际数据框中的某些行将包含 1 或 0 以外的值,这会干扰使用简单的总结。因此,示例数据框应该看起来像这样:
data<-as.data.frame(cbind('answer1' = c(0,0,1,0,2,0),
'answer2' = c(1,1,1,1,1,0),
'answer3' = c(1,1,1,0,1,1),
'answer4' = c(1,0,0,0,0,0)))
【问题讨论】:
标签: r