按周或按3天进行数据汇总

时间:2017-02-03 16:29:12

标签: r subset stat

以下是我的数据示例:

 Date        Prec       aggregated by week (output)

        1/1/1950    3.11E+00    4.08E+00

        1/2/1950    3.25E+00    9.64E+00

        1/3/1950    4.81E+00    1.15E+01

        1/4/1950    7.07E+00    

        1/5/1950    4.25E+00    

        1/6/1950    3.11E+00    

        1/7/1950    2.97E+00    

        1/8/1950    2.83E+00    

        1/9/1950    2.72E+00    

        1/10/1950   2.72E+00    

        1/11/1950   2.60E+00    

        1/12/1950   2.83E+00    

        1/13/1950   1.70E+01    

        1/14/1950   3.68E+01    

        1/15/1950   4.24E+01    

        1/16/1950   1.70E+01    

        1/17/1950   7.07E+00    

        1/18/1950   3.96E+00    

        1/19/1950   3.54E+00    

        1/20/1950   3.40E+00    

        1/21/1950   3.25E+00

我有很长时间的系列降水数据,我想以这样的方式聚合它(输出在第三列;我从excel计算)如下

如果我每周聚集一次            第1小区的输出=从第1天到第7天的平均预测值。             第二个单元格中的输出=平均预测8到14天。             第3小区的输出= 15至21天的平均预测

如果我在3天内进行聚合     第1小区的输出=第1天至第3天的平均值。     第二单元格中的输出=第4天至第6天的平均值。

我将提供具有“prec”和“time step”输入的功能。我尝试了循环和lubridatePOSIXct以及其他一些函数,但我不能像第三列那样找出输出。

我提出的一个代码运行没有错误,但我的输出是机器人正确的。 dat是我的数据集。

  tt=as.POSIXct(paste(dat$Date),format="%m/%d/%Y") #converting date formate 
     datZoo <- zoo(dat[,-c(1,3)], tt)
     weekly <- apply.weekly(datZoo,mean)
    prec_NLCD <-data.frame (weekly)

我也想以函数的形式编写它。您的建议会有所帮助。

1 个答案:

答案 0 :(得分:1)

假设最后的注释中可重复显示的数据创建每周均值zm,然后将其与z合并。

(在计算它们时合并平均值似乎更有意义,即merge(z, zm)代替标记为##的行,但为了与问题中显示的输出保持一致,它们是放在下面的数据的前面。)

library(zoo)

z <- read.zoo(text = Lines, header = TRUE, format = "%m/%d/%Y")

zm <- rollapplyr(z, 7, by = 7, mean)
merge(z, zm = zoo(coredata(zm), head(time(z), length(zm)))) ##

,并提供:

               z        zm
1950-01-01  3.11  4.081429
1950-01-02  3.25  9.642857
1950-01-03  4.81 11.517143
1950-01-04  7.07        NA
1950-01-05  4.25        NA
1950-01-06  3.11        NA
1950-01-07  2.97        NA
1950-01-08  2.83        NA
1950-01-09  2.72        NA
1950-01-10  2.72        NA
1950-01-11  2.60        NA
1950-01-12  2.83        NA
1950-01-13 17.00        NA
1950-01-14 36.80        NA
1950-01-15 42.40        NA
1950-01-16 17.00        NA
1950-01-17  7.07        NA
1950-01-18  3.96        NA
1950-01-19  3.54        NA
1950-01-20  3.40        NA
1950-01-21  3.25        NA

注意:

Lines <- "Date        Prec       
    1/1/1950    3.11E+00   
    1/2/1950    3.25E+00   
    1/3/1950    4.81E+00   
    1/4/1950    7.07E+00    
    1/5/1950    4.25E+00    
    1/6/1950    3.11E+00    
    1/7/1950    2.97E+00    
    1/8/1950    2.83E+00    
    1/9/1950    2.72E+00    
    1/10/1950   2.72E+00    
    1/11/1950   2.60E+00    
    1/12/1950   2.83E+00    
    1/13/1950   1.70E+01    
    1/14/1950   3.68E+01    
    1/15/1950   4.24E+01    
    1/16/1950   1.70E+01    
    1/17/1950   7.07E+00    
    1/18/1950   3.96E+00    
    1/19/1950   3.54E+00    
    1/20/1950   3.40E+00    
    1/21/1950   3.25E+00"