在R中基于一列计算条件均值

4

I have a dataframe like this:

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个平均值。 谢谢你的帮助。

这个问题非常类似:http://stackoverflow.com/questions/9379065/how-to-sum-grouped-elements-of-a-vector-in-r - Chase
3个回答

5

可能最简单的方法是使用plyr

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

您可以使用data.tableaggregateby等函数来完成类似的操作。在这里浏览一下SO上的R标签可能会对您有所帮助。


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")

1
假设你的数据存储在一个名为“DATA”的数据框中。
> 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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接