所以我试图在R中使用R中的镜头数据找到Greens in Regulation(在par减去2杆中的绿色):
Player Shot Par To_Location Hole
Tiger Woods 1 4 Fairway 1
Tiger Woods 2 4 Green 1
Tiger Woods 3 4 Green 1
Tiger Woods 4 4 Hole 1
Tiger Woods 1 3 Rough 2
Tiger Woods 2 3 Green 2
Tiger Woods 3 3 Hole 2
Tiger Woods 1 4 Green 3
Tiger Woods 2 4 Green 3
Tiger Woods 3 4 Hole 3
我一直在使用以下脚本:
result <- df %>%
group_by(Player) %>%
summarize(GIR = sum(To_Location == "Green" & Par - Shot > 1) / n())
但价值观不正确,很可能是因为它会对一些果岭进行重复计算(如果有鹰机会),也可能是因为我不应该以这种方式进行总结?
我想要一个看起来像这样的结果:
Player GIR
Tiger Woods .6666667
因为他在三个洞中的两个洞的规则上取得了绿色。
答案 0 :(得分:1)
以下是使用top_n
dplyr
获取第一行的方法。另外,创建一个洞变量,如注释
g <- rle(df$Par)
df$hole <- rep(seq_along(g$values), times=g$lengths)
result <- df %>%
group_by(Player) %>%
top_n(1, hole) %>%
summarize(GIR = sum(`To Location` == "Green" & Par - Shot > 1) / n())
# Player GIR
# 1 Tiger Woods 0.6666667