r中
数据聚集I有一个数据组(试验)r中
v1 v2 v3 v4 v5 v6
1 1 1 0 0 0
2 2 1 1 0 0
3 2 1 0 0 0
4 3 1 0 0 0
5 3 1 1 0 1
6 3 1 0 1 1
structure(list(V1 = 1:6, V2 = c(1L, 2L, 2L, 3L, 3L, 3L), V3 = c(1L,
1L, 1L, 1L, 1L, 1L), V4 = c(0L, 1L, 0L, 0L, 1L, 0L), V5 = c(0L,
0L, 0L, 0L, 0L, 1L), V6 = c(0L, 0L, 0L, 0L, 1L, 1L)), .Names = c("V1",
"V2", "V3", "V4", "V5", "V6"), class = "data.frame", row.names = c(NA,
-6L))
和我想要实现这个
v1 v2 v3 v4 v5 v6
1 1 1 0 0 0
5 2 2 1 0 0
15 3 3 1 1 2
我曾尝试这样的:
aggregate(test[c('v3', 'v4', 'v5','v6')], list('v2'), FUN=sum, na.rm=TRUE)
这是不加工。我想根据V2对(测试)中的数据进行聚合,然后对其他变量进行求和。
更改aggregate
命令:
aggregate(. ~ V2, test, sum)
# V2 V1 V3 V4 V5 V6
# 1 1 1 1 0 0 0
# 2 2 5 2 1 0 0
# 3 3 15 3 1 1 2
需要注意以下几点:
- R是区分大小写的。您提供的样本数据具有以大写“V”命名的变量,但您尝试的样本代码具有小写“v”。
- 您正试图直接引用变量名称。为此,您需要使用公式符号
aggregate()
,或者您需要使用with()
或(不推荐)attach()
。
很好的使用聚合物配方。 –
@Ananda Mahto,感谢您的解决方案和您的反馈。 –
您的初始尝试几乎是正确的。轻微的更正,你可以达到你想要的。这假定你想通过V2来聚合总和行
result <- aggregate(test[,c('V1', 'V3', 'V4', 'V5','V6')], list(test[,'V2']), FUN=sum, na.rm=TRUE)
> names(result) <- gsub("Group.1", "V2", names(result))
> result
V2 V1 V3 V4 V5 V6
1 1 1 1 0 0 0
2 2 5 2 1 0 0
3 3 15 3 1 1 2
如果你不介意我会用Ananda Mahto的解决方案,但是谢谢你的解决方案,我正在学习很多东西,还有积极的反馈。 –
更重要的是,你完全不清楚你想如何从输入到输出。他们之间有什么关系? –
这个问题还不清楚。 –
我可以猜测你的意思是做什么,但仅仅提供输入和输出是远远不够的。对那些试图帮助你的人很好,并且在你想要做的事情中包含一个英语解释。 – joran