【问题标题】:How to convert weekly data into monthly data? [duplicate]如何将周数据转换为月数据? [复制]
【发布时间】:2016-03-13 17:31:05
【问题描述】:

例如,这是我拥有的数据。 我想通过加权平均兴趣将此每周数据转换为每月数据。问题是,一些 7 天 X1 数据会从一个月到另一个月重叠。

    Week                    interest Start        End
1   2004-01-04 - 2004-01-10       62 2004-01-04 2004-01-10
2   2004-01-11 - 2004-01-17       70 2004-01-11 2004-01-17
3   2004-01-18 - 2004-01-24       69 2004-01-18 2004-01-24
4   2004-01-25 - 2004-01-31       68 2004-01-25 2004-01-31
5   2004-02-01 - 2004-02-07       63 2004-02-01 2004-02-07
6   2004-02-08 - 2004-02-14       65 2004-02-08 2004-02-14
7   2004-02-15 - 2004-02-21       66 2004-02-15 2004-02-21
8   2004-02-22 - 2004-02-28       66 2004-02-22 2004-02-28
9   2004-02-29 - 2004-03-06       70 2004-02-29 2004-03-06
10  2004-03-07 - 2004-03-13       80 2004-03-07 2004-03-13
11  2004-03-14 - 2004-03-20       82 2004-03-14 2004-03-20

我尝试将这些数据转换为每日数据,然后将每日数据汇总为每月数据,但我不知道如何转换。更具体地说,数据框如下所示:

2004-01-04 62 
2004-01-05 62 
2004-01-06 62 
... 
2004-01-10 62 
2005-01-11 70 
.... 
... 

【问题讨论】:

    标签: r


    【解决方案1】:

    将数据读入动物园对象,将其与每日网格合并,并使用na.locf 填写空白日期。然后按年/月汇总:

    # input data frame in reproducible form
    
    Lines <- "interest Start        End
    62 2004-01-04 2004-01-10
    70 2004-01-11 2004-01-17
    69 2004-01-18 2004-01-24
    68 2004-01-25 2004-01-31
    63 2004-02-01 2004-02-07
    65 2004-02-08 2004-02-14
    66 2004-02-15 2004-02-21
    66 2004-02-22 2004-02-28
    70 2004-02-29 2004-03-06
    80 2004-03-07 2004-03-13
    82 2004-03-14 2004-03-20"
    DF <- read.table(text = Lines, header = TRUE)
    
    # convert to zoo, merge with a daily grid and aggregate by month using mean
    
    library(zoo)
    z.st <- read.zoo(DF[c("Start", "interest")])
    z.en <- read.zoo(DF[c("End", "interest")])
    z <- c(z.st, z.en)
    
    g <- zoo(, seq(start(z), end(z), "day"))
    m <- na.locf(merge(z, g))
    aggregate(m, as.yearmon, mean)
    

    给予:

    Jan 2004 Feb 2004 Mar 2004 
    67.25000 65.17241 77.70000 
    

    更新:已修复

    【讨论】:

    • 这正是我所需要的!!还有一件事,既然我们得到的是一个动物园系列,那么如何将它转换成一个数据框呢?非常感谢!
    • 如果agaggregate 的结果,那么fortify.zoo(ag) 是一个数据框。 Index 列将属于 "yearmon" 类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-26
    • 2013-05-02
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    相关资源
    最近更新 更多