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

时间:2015-04-27 12:28:47

标签: r dataframe mean

我想用两个变量计算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,但都没有效果。 最后,我希望有一个新的数据框,如下所示:

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初学者;​​)

3 个答案:

答案 0 :(得分:3)

您可以使用data.table包:

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

答案 1 :(得分:2)

假设您的数据名为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

答案 2 :(得分:1)

使用dplyr包,如果您的data.frame被调用dat

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