【问题标题】:Convert weekly data frame to daily time series with xts使用 xts 将每周数据帧转换为每日时间序列
【发布时间】:2014-07-17 14:01:59
【问题描述】:

我有一个如下所示的数据框:

> head(hpr)
    Week      Hpr
1 199536 143111.0
2 199537 140721.9
3 199538 140864.9
4 199539 143293.1
5 199540 148913.3
6 199541 149267.6

我想将此每周数据框转换为每日 xts 对象。 this 问题的答案似乎解决了这个问题。

这里的问题是非标准的日期格式,YYYYWW。我尝试使用 as.POSIXct 转换日期,但这让我无处可去:

index <- as.POSIXct(strptime(hpr[,1], "%Y%W"))
> head(index)
[1] "1995-05-28 CEST" "1995-05-28 CEST" "1995-05-28 CEST" "1995-05-28 CEST" "1995-05-28 CEST" "1995-05-28 CEST"

我希望创建一个如下所示的 xts 对象:

    Date      Hpr
1995-09-04 143111.0
1995-09-05 143111.0
1995-09-06 143111.0
1995-09-07 143111.0
1995-09-08 143111.0
1995-09-09 143111.0
1995-09-10 143111.0
1995-09-11 140721.9
1995-09-12 140721.9
1995-09-13 140721.9
1995-09-14 140721.9
1995-09-15 140721.9
1995-09-16 140721.9
1995-09-17 140721.9

建议?

【问题讨论】:

  • 这不是 xts 的真正问题;这是如何使用strptime的问题
  • 是的,你当然是对的。我应该专注于“strptime”函数而不是“xts”函数

标签: r xts


【解决方案1】:

有关此问题的详细讨论,请参阅this question;我建议的解决方法是

hpr$Week <- paste0(hpr$Week, "1")
ind <- as.POSIXct(strptime(hpr[,1], "%Y%W%u"))
#[1] "1995-09-04 MSD" "1995-09-11 MSD" "1995-09-18 MSD" "1995-09-25 MSK" "1995-10-02 MSK" "1995-10-09 MSK"
na.locf(merge(xts(hpr$Hpr, ind), 
              xts(, seq(start(w), end(w), "days"))))

【讨论】:

    猜你喜欢
    • 2022-09-23
    • 2019-09-17
    • 2020-12-18
    • 2012-08-07
    • 2020-07-06
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    相关资源
    最近更新 更多