Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何计算大型数据集的平均值_R_Time Series_Average_Plyr - Fatal编程技术网

R 如何计算大型数据集的平均值

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

我正在使用一个数据集,它有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 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)