以下是我正在使用的一些数据:
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似乎不适用于整数字段 - 我尝试将字段变为字符串作为变通方法,但这似乎也不起作用。为什么不能以这种方式运作?是否有其他类似计数的函数可以处理此请求?
答案 0 :(得分:1)
您可以尝试df
是data.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)))