R 如何计算大型数据集的平均值
我正在使用一个数据集,它有100多年的时间,每天24小时,每小时一次的温度读数。我想得到每天的平均温度,以减少数据集的大小。标题如下所示:R 如何计算大型数据集的平均值,r,time-series,average,plyr,R,Time Series,Average,Plyr,我正在使用一个数据集,它有100多年的时间,每天24小时,每小时一次的温度读数。我想得到每天的平均温度,以减少数据集的大小。标题如下所示: YR MO DA HR MN TEMP 1943 6 19 10 0 73 1943 6 19 11 0 72 1943 6 19 12 0 76 1943 6 19 13 0 78 1943 6 19 14 0 81 1943 6 19 15 0 85 1943 6 1
YR MO DA HR MN TEMP
1943 6 19 10 0 73
1943 6 19 11 0 72
1943 6 19 12 0 76
1943 6 19 13 0 78
1943 6 19 14 0 81
1943 6 19 15 0 85
1943 6 19 16 0 85
1943 6 19 17 0 86
1943 6 19 18 0 86
1943 6 19 19 0 87
用于600000多个数据点的etc
如何运行嵌套函数来计算日平均温度,以便保留YR、MO、DA、TEMP?
一旦我有了这个,我希望能够看到长期平均值,计算出30年来一月的平均温度。我该怎么做?只需一步,您就可以做到:
meanTbl <- with(datfrm, tapply(TEMP, ISOdate(YR, MO, DA), mean) )
meansbl您的第一个问题可以通过使用plyr
软件包来解决:
library(plyr)
daily_mean = ddply(df, .(YR, MO, DA), summarise, mean_temp = mean(TEMP))
与上述解决方案类似,获得每月收入意味着:
monthly_mean = ddply(df, .(YR, MO), summarise, mean_temp = mean(temp))
或者获取整个数据集的月平均值(30年,又名气候正常值),而不是每年:
monthly_mean_normals = ddply(df, .(MO), summarise, mean_temp = mean(temp))
您可以使用aggregate
:
# daily means
aggregate(TEMP ~ YR + MO + DA, FUN=mean, data=data)
# monthly means
aggregate(TEMP ~ YR + MO, FUN=mean, data=data)
# yearly means
aggregate(TEMP ~ YR, FUN=mean, data=data)
# monthly means independent of year
aggregate(TEMP ~ MO, FUN=mean, data=data)
两个警告:注意消除不完整的天数(或内插它们),这个简单的平均值不是所有的流星人通常考虑的平均温度-有一些愚蠢的标准,比如温度从9:00开始,重量0.4加上13:00的温度。目前这只是一个课程项目,不会用于出版。不过,我会在将来研究这个问题。谢谢!虽然我决定使用下面的plyr软件包,但我确实使用了它。谢谢!虽然我决定使用plyr软件包,但我确实使用了它。我对Belowi发表了评论,谢谢!我用它来降低我的数据和它的奇妙。当我计算月平均值时,结果都是“NA”,我有没有遗漏什么?如何计算1950-1980年的月(日)平均数?请阅读mean
的文档,特别是na.rm
。
monthly_mean_normals = ddply(df, .(MO), summarise, mean_temp = mean(temp))
# daily means
aggregate(TEMP ~ YR + MO + DA, FUN=mean, data=data)
# monthly means
aggregate(TEMP ~ YR + MO, FUN=mean, data=data)
# yearly means
aggregate(TEMP ~ YR, FUN=mean, data=data)
# monthly means independent of year
aggregate(TEMP ~ MO, FUN=mean, data=data)