所以我一直在努力解决这个问题。我还是R的新手还没有在这里找到解决方案。
我有一个data.frame
,如下所示:
LandAverageTemperature LandAverageTemperatureUncertainty date year
1 3.0340000000000003 3.574 1750-01-01 1750
2 3.083 3.702 1750-02-01 1750
3 5.626 3.076 1750-03-01 1750
4 8.49 2.451 1750-04-01 1750
5 11.573 2.072 1750-05-01 1750
6 12.937000000000001 1.724 1750-06-01 1750
所以我想要做的是:每年,我想获得LandAverageTemperature
列的平均值。
我尝试使用split
函数首先执行此操作:
df_list <- split(cleanGlobalTemps, f = cleanGlobalTemps$year)
这给我留下了266个元素的大量列表(从1750年到2016年每年一个)。我想遍历此列表中的每个dataframe
并获取LandAverageTemperature
列的平均值。
我试过了:
for(i in 1:length(df_list)){
averageYearlyGlobalTemp[i] <- mean(as.double(df_list[[i]][[1]]), na.rm = TRUE)
}
但这不起作用,它会返回如下结果:
> averageYearlyGlobalTemp
[1] 1320.1667 709.6667 973.1667 1319.7500 1120.9167 1300.2500 1368.9167 1365.7500 1133.5833 1335.8333 1056.8333
[12] 1336.4167 1543.8333 1004.5000 1139.7500 1435.0000 1404.8333 1288.7500 1239.6667 1282.7500 1345.9167 1313.1667
[23] 1469.5000 1273.2500 1151.7500 1304.0000
....等等。
答案 0 :(得分:2)
df %>%
filter(!is.na(LandAverageTemperature)) %>%
group_by(year) %>%
summarise( output = mean(LandAverageTemperature) )
答案 1 :(得分:0)
aggregate
允许您按组计算统计信息
aggregate(cleanGlobalTemps$LandAverageTemperature, by=list(cleanGlobalTemps$year), FUN=mean)
答案 2 :(得分:0)
(代表OP发布)。
非常感谢大家的帮助。 @先生。 Bugle下面建议的代码很有希望,但我无法得到正确答案。事实证明,因为我正在处理因素,我需要使用levels()函数来访问列中的正确值。
这是最终的工作代码:
averageYearlyGlobalTemp <- aggregate(as.numeric(levels(cleanGlobalTemps$LandAverageTemperature)[cleanGlobalTemps$LandAverageTemperature]), by=list(cleanGlobalTemps$year), FUN=mean, na.rm = TRUE)