最后三行的因子水平

时间:2014-02-11 10:30:12

标签: r plyr

我有一个数据框,看起来像这样(但有更多的因子级别和值)

ID <- c("A", "A", "A", "A", "A", "B", "B", "B", "B", "C", "C", "C", "C", "C", "C")
Value <- rep(1:5)
test <- cbind.data.frame(ID, Value)

我想计算每个因子水平的前3个和后3个值(行)的平均值。

对于我使用ddply的前3个值:

library(plyr)    
mean_start <- ddply(test, .(ID), summarise, mean_start = mean(Value[1:3]))

这很有效。但是,如果每个因子级别具有不同的行数,我怎么能引用最后3行呢?

1 个答案:

答案 0 :(得分:2)

使用headtail

library(plyr)    
(means <- ddply(test, .(ID), summarise, mean_start = mean(head(Value, 3)), mean_end = mean(tail(Value, 3))))
# ID mean_start mean_end
# 1  A   2.000000        4
# 2  B   2.000000        3
# 3  C   2.666667        4