【发布时间】:2017-01-19 21:02:16
【问题描述】:
我正在学习 plyr 包,我正在使用内置的“棒球”数据集进行练习。这是示例数据(整个数据框比较宽,所以我只发布了从练习的角度来看相关的部分):
data(baseball)
baseball <- baseball[with(baseball, order(id, year)), ]
rownames(baseball) <- NULL
head(baseball[,c("id","year", "ab")])
id year ab
1 aaronha01 1954 468
2 aaronha01 1955 602
3 aaronha01 1956 609
4 aaronha01 1957 615
5 aaronha01 1958 601
6 aaronha01 1959 629
我想要做的是向该数据框添加另一列,其中将包含最新的平均“bat 次数”(ab 变量),因此对于前 3 行,它看起来像这样:
id year ab atb
1 aaronha01 1954 468 468
2 aaronha01 1955 602 535
3 aaronha01 1956 609 559.6667
现在我知道我应该使用 ddply 和 transform 函数,但我不知道语法应该如何寻找从值到某个索引的平均值:
baseball <- ddply(baseball, ~ id, transform, atb = ???)
不胜感激。
【问题讨论】:
-
你可以考虑
plyrpackage的继任者:dplyr。在那里你可以找到函数cummean。或者只是base:cumsum(df$ab) / seq_along(df$ab)。 -
谢谢,第二种语法正是我想要的!