我想计算数据框中某个因素的出现次数。例如,在下面的代码中计算给定类型的事件数:
library(plyr)
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
ddply(events, .(type), summarise, quantity = sum(quantity))
输出如下:
type quantity
1 A 3
2 B 1
但是,如果我知道有 3 种类型的事件A
,B
和C
, 并且我还想查看是 的计数,C
该0
怎么办?换句话说,我希望输出为:
type quantity
1 A 3
2 B 1
3 C 0
我该怎么做呢?感觉应该在某个地方定义一个函数来执行此操作。
以下是我关于如何解决这个问题的两个不太好的想法。
想法#1:我知道我可以通过使用for
循环来做到这一点,但我知道人们普遍认为,如果你在 中使用for
循环R
,那么你做错了什么,必须有更好的方法来做到这一点。
想法#2:向原始数据框添加虚拟条目。这个解决方案有效,但感觉应该有一个更优雅的解决方案。
events <- data.frame(type = c('A', 'A', 'B'),
quantity = c(1, 2, 1))
events <- rbind(events, data.frame(type = 'C', quantity = 0))
ddply(events, .(type), summarise, quantity = sum(quantity))