我有一个数据框,看起来像这样(但有更多的因子级别和值)
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行呢?
答案 0 :(得分:2)
使用head
和tail
:
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