使用dplyr :: summarize()函数进行多步算术过程?

时间:2015-07-21 21:29:51

标签: r

所以我得到了一些我在R中搞砸的高尔夫数据:

player  rd  hole    shot    distToPin   distShot
E. Els  1   1       1       525         367.6
E. Els  1   1       2       157.4       130.8
E. Els  1   1       3       27.5        27.4
E. Els  1   1       4       1.2         1.2
E. Els  1   2       1       222         216.6
E. Els  1   2       2       6.8         6.6
E. Els  1   2       3       0.3         0.3
E. Els  2   1       1       378         244.4
E. Els  2   1       2       135.9       141.6
E. Els  2   1       3       6.7         6.9
E. Els  2   1       4       0.1         0.1

我试图提高效率"计算。基本上,我想计算下面的公式(我编写的,如果你不能告诉的话):

E = hole yardage / (sum(distance of all shots) - hole yardage)

最终,我希望我的结果看起来像这样:

            rd      efficiency
E.Els       1       205.25
            2       25.2

efficiency列是整个回合中每个洞效率的平均结果。我遇到的问题是我无法弄清楚如何使用dplyr :: summarize()进行如此复杂的计算:

efficiency <- df %>% 
group_by(player, rd) %>%
summarize(efficiency = (sum(distShot) - distToPin))

但该特定脚本的问题是它返回错误:

Error: expecting a single value

我认为我的问题是,如果它要运行,它就不能告诉WHICH distToPin减去,而我想要的那个显然是每个洞的第一个distToPin,或准确的孔长度(不幸的是,我没有一个只有&#34;孔码数的列。&#34;我想拉出每个洞的第一个distToPin并在我的摘要()算术中使用它。这甚至可能吗? / p>

我猜测有一种方法可以在汇总函数中进行这些类型的复杂的多步计算,但也许没有!任何想法或建议?

1 个答案:

答案 0 :(得分:1)

你似乎错过了一些步骤。这是一个刻意劳累的版本,使用java.lang.Void.class来表明。它假定您的数据框名为dplyr

golfdf