仅根据R中的一列计算条件均值

时间:2012-02-21 17:44:18

标签: r

我有一个这样的数据框:

block   plot    date    data
1   1   aug 11.95171507
1   1   aug 18.41451063
1   2   aug 9.506155236
1   2   aug 13.26259947
1   3   aug 17.53616835
1   3   sep 15.40950767
2   1   sep 23.03616678
2   1   sep 17.07067258
2   2   sep 11.58278798
2   2   sep 13.15443304

我想根据块和日期计算绘图中的数据平均值。最终,我希望有5种方法。 谢谢你的帮助。

3 个答案:

答案 0 :(得分:5)

可能阻力最小的路径是使用plyr

library(plyr)
ddply(yourData, c("block", "date"), summarize, outVal = mean(data))

您可以使用data.tableaggregateby以及其他许多功能执行类似的操作。花几分钟时间仔细阅读这里的R标签。

答案 1 :(得分:4)

看看aggregate。我想这就是你想要的。

d <- data.frame(block=c(1,1,1,1,1,1,2,2,2,2), plot=c(1,1,2,2,3,3,1,1,2,2), date=c(rep('aug',5),rep('sep',5)),
   data=c(11.95171507, 18.41451063, 9.506155236, 13.26259947, 17.53616835, 15.40950767, 23.03616678,
   17.07067258, 11.58278798, 13.15443304))

aggregate(x = d$data, by = list(d$block, d$date), FUN = "mean")

答案 2 :(得分:1)

我们假设您的数据存储在名为&#34; DATA&#34;的数据框中。

> DATA

   block plot date      data
1      1    1  aug 11.951715
2      1    1  aug 18.414511
3      1    2  aug  9.506155
4      1    2  aug 13.262599
5      1    3  aug 17.536168
6      1    3  sep 15.409508
7      2    1  sep 23.036167
8      2    1  sep 17.070673
9      2    2  sep 11.582788
10     2    2  sep 13.154433

然后我们可以输入以下内容:

> aggregate(DATA$data, list(Block = DATA$block, Date = DATA$date), mean)

  Block Date        x
1     1  aug 14.13423
2     1  sep 15.40951
3     2  sep 16.21102