这是我目前正在处理的数据集的片段:
> sample
name sex count
1 Maria f 97
2 Thomas m 12
3 Maria m 5
4 Maria f 97
5 Thomas m 8
6 Maria m 4
我想总结分组的计数name并sex最终得到这个data.frame:
> result
Maria Thomas
f 194 0
m 9 20
我写了一个简单的循环来遍历行并总结计数:
result <- matrix(0, nrow=2, ncol=2)
colnames(result) <- unique(sample$name)
rownames(result) <- unique(sample$sex)
for (i in 1:nrow(sample)) {
sex <- as.character(sample[i,"sex"])
name <- sample[i,"name"]
count <- sample[i,"count"]
result[sex, name] <- result[sex, name] + count
}
这样做是否合适?还有其他更优雅/更短的方式吗?
编辑:
我已经尝试过aggregate,但输出格式不同:
> aggregate(sample$count,by=list(sample$name,sample$sex),sum)
Group.1 Group.2 x
1 Maria m 9
2 Thomas m 20
3 Maria w 194