2


我的数据看起来类似于:

value    days
  25       1
  24       2
  25       4
  26       5

我想计算 value 列的每 n 行的平均值,但要保留每一行、每 n 行的“天”信息。例如,对于 n=2,新数据将相应地显示:

 value    days
  24.5     1
  25.5     4

当我使用 colMeans 时,我只得到 value 列。

你有什么建议吗?

谢谢。

4

1 回答 1

3

说你data.framedf

library(plyr)
n <- 2
ddply(df, .(rep(1:(nrow(df)/n), each=n)), summarise, mean=mean(value), day=days[1])

编辑:

您还可以为您的子集()提供更多变量df,只需将它们放在里面.(),用逗号分隔,.(var1, var2, var3)或者,为这些变量命名, .(newname1=var1, newname2=var2, newname3=var3). 在您的示例中:

> ddply(df, .(groupID=rep(1:(nrow(df)/n), each=n)), summarise, mean=mean(value), day=days[1])
  groupID mean day
1       1 24.5   1
2       2 25.5   4
于 2013-06-18T09:55:39.657 回答