统计R中整数字段上唯一出现的次数?

时间:2015-07-21 13:15:17

标签: r

以下是我正在使用的一些数据:

tournament  round   player      holeocc
Masters     1   Tiger Woods     2
Masters     1   Tiger Woods     3
Masters     1   Tiger Woods     4
Masters     1   Tiger Woods     5
Masters     1   Tiger Woods     5
Masters     1   Tiger Woods     6
Masters     1   Tiger Woods     18
Masters     2   Tiger Woods     8
Masters     2   Tiger Woods     9
Masters     2   Tiger Woods     10
Masters     3   Tiger Woods     1
Masters     3   Tiger Woods     4
Masters     3   Tiger Woods     4
Masters     3   Tiger Woods     17
Masters     1   Mark O'Meara    1

我试图计算每一轮事件的发生次数,但每个洞只计算一次,所以第1轮第5洞和第3轮第4洞。

我应该得到这样的数据:

 player         tournament    round    num_of_occurences    
 Tiger Woods    Masters       1        6
 Tiger Woods    Masters       2        3
 Tiger Woods    Masters       3        3
 Mark O'Meara   Masters       1        1

从理论上讲,这应该是直截了当的,我会做一些看起来像这样的事情:

results <- df %>% 
group_by(player, tournament, round) %>%
summarize(num_of_occurences = tally(unique(holeocc))

问题在于,tally似乎不适用于整数字段 - 我尝试将字段变为字符串作为变通方法,但这似乎也不起作用。为什么不能以这种方式运作?是否有其他类似计数的函数可以处理此请求?

2 个答案:

答案 0 :(得分:1)

您可以尝试dfdata.frame

library(data.table)
setDT(df)[,.(numOccur=length(unique(holeocc))), by=.(player, tournament, round)]

答案 1 :(得分:1)

您可以使用length来获取事件的向量长度,这与事件数量相同。在这种情况下:

results <- df %>% group_by(player, tournament, round) %>% 
    summarize(num_of_occurences = length(unique(holeocc)))