我想用两个变量计算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年。
我尝试了一些内容,例如split
或aggregate
和ddply
,但都没有效果。
最后,我希望有一个新的数据框,如下所示:
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初学者;)
答案 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))