通过从数据框中的两列中进行选择来计算均值

Calculating mean by selecting from two columns in a data frame

我想计算两个变量的 data.frame 的平均值。 请参阅下面的 data.frame(提取)示例:

         Station Time Year Month Value         
         ARO 199501 1995     1      69
         ARO 199502 1995     2      87
         ARO 199503 1995     3     107
         ARO 199601 1996     1      35
         ARO 199602 1996     2      46
         ARO 199603 1996     3      50
         ANT 200401 2004     1      87
         ANT 200402 2004     2     115
         ANT 200403 2004     3     110
         ANT 200501 2005     1      80
         ANT 200502 2005     2     122
         ANT 200503 2005     3     107

更详细一点:我想计算每个站点月的平均值,例如第 1 个月 ARO 的平均值 = (69+35)/2,第 1 个月 ANT 的平均值 = (87+80)/2

年份无关紧要,因为我想为每个月和每个站点计算 20 年期间的平均值。

我的数据框很大,有 61 个站和 12 个月,每个 20 年的时间序列。

我尝试了几种方法,例如 splitaggregateddply,但其中 none 有效。 最后,我想要一个新的数据框,如下所示:

Station Month Valuemean
ARO 1 52
ARO 2 66.5
ARO 3 78.5
ANT 1 83.5
ANT 2 118.5
ANT 3 108.5

如果你有一些实现它的想法就太好了。非常感谢!

PS:我是 R 初学者 ;)

假设您的数据名为 df,您可以尝试 aggregate

 aggregate(Value~Month+Station, data=df, FUN = mean)
  Month Station Value
1     1     ANT  83.5
2     2     ANT 118.5
3     3     ANT 108.5
4     1     ARO  52.0
5     2     ARO  66.5
6     3     ARO  78.5

您可以使用 data.table 包:

library(data.table)
setDT(df)[,mean(Value), by=list(Month, Station)]

使用 dplyr 包,如果你的 data.frame 被称为 dat:

library(dplyr)
means <- dat %>%
  group_by(Station, Month) %>%
  summarise(Valuemean = mean(Value, na.rm = TRUE))