首页 文章

将每周时间序列延伸到每日

提问于
浏览
5

我有一个xts时间序列的每周值

Jan 4 2004, 0.99
Jan 11 2004, 1.11
Jan 18 2004, 1.06
....

我想把它转换成日常 Value 观

Jan 4 2004, 0.99
Jan 5 2004, 0.99
Jan 6 2004, 0.99
....
Jan 10 2004, 0.99
Jan 11 2004, 1.11
Jan 12 2004, 1.11
Jan 13 2004, 1.11
....

其中每个值在接下来的6天内被复制 .

我怎么能在R中这样做?

2 回答

  • 0

    您显示的数据不是xts系列 . 我假设这是数据在CSV文件中的表示方式 . 要回答你的问题,我假设你有一个每周xts对象, w .

    w 与空xts对象合并,其索引跨越所需的所有日期 . 然后在结果上使用 na.locf .

    d <- merge(w, xts(,seq(start(w),end(w),"days")))
    d <- na.locf(d)
    
  • 11

    这是一种方法:

    dat <- read.table(text="Jan 4 2004, 0.99
    Jan 11 2004, 1.11
    Jan 18 2004, 1.06", header=F)
    dat
    
    dat2 <- dat[rep(seq_len(nrow(dat)), 7), ]
    dat2 <- with(dat2, dat2[order(V1, V2, V3), ])
    dat2$V2 <- rep(dat$V2, each=7) + 0:6
    rownames(dat2) <- 1:nrow(dat2)
    dat2
    

    这使:

    V1 V2    V3   V4
    1  Jan  4 2004, 0.99
    2  Jan  5 2004, 0.99
    3  Jan  6 2004, 0.99
    4  Jan  7 2004, 0.99
    5  Jan  8 2004, 0.99
    6  Jan  9 2004, 0.99
    7  Jan 10 2004, 0.99
    8  Jan 11 2004, 1.11
    9  Jan 12 2004, 1.11
    10 Jan 13 2004, 1.11
    11 Jan 14 2004, 1.11
    12 Jan 15 2004, 1.11
    13 Jan 16 2004, 1.11
    14 Jan 17 2004, 1.11
    15 Jan 18 2004, 1.06
    16 Jan 19 2004, 1.06
    17 Jan 20 2004, 1.06
    18 Jan 21 2004, 1.06
    19 Jan 22 2004, 1.06
    20 Jan 23 2004, 1.06
    21 Jan 24 2004, 1.06
    

相关问题