簡體   English   中英

用NULL行R填充丟失的時間序列數據

[英]Fill missing timeseries data with NULL rows R

我有一個數據框,其中一列是日期yyyy-mm-dd,但是它偶爾會跳過日期,從而缺少幾天,幾個月甚至幾年。 如何創建缺少日期的行,並用NA填充空白數據槽? 我已經嘗試過這里提供的解決方案但似乎無法使它起作用。 我的數據框看起來像:

Data <- data.frame( X = c(1:10), 
                    Y = seq.Date(as.Date("1870-01-01"),as.Date("1870-01-10"),"day"),
                    Z = rnorm(10,10,5), A = c(10:1), B = c(109:100))
Datamissing <- Data[-c(2,4,7:10),]
Datamissing

#  X          Y         Z  A   B
#1 1 1870-01-01  3.581199 10 109
#3 3 1870-01-03  6.158980  8 107
#5 5 1870-01-05 10.259756  6 105
#6 6 1870-01-06  3.077985  5 104

我想要的輸出是:

Data[c(2,4,7:10),c(3:5)] <- NA
Datafilled <- Data
Datafilled

#    X          Y         Z  A   B
#1   1 1870-01-01  3.581199 10 109
#2   2 1870-01-02        NA NA  NA
#3   3 1870-01-03  6.158980  8 107
#4   4 1870-01-04        NA NA  NA
#5   5 1870-01-05 10.259756  6 105
#6   6 1870-01-06  3.077985  5 104
#7   7 1870-01-07        NA NA  NA
#8   8 1870-01-08        NA NA  NA
#9   9 1870-01-09        NA NA  NA
#10 10 1870-01-10        NA NA  NA

另外,我在列表中有一堆這些數據框。 到目前為止,我有一個data.frame,其中包含開始日期和結束日期,將其應用於新的dataframe:

    days <- seq.Date(as.Date("1870-01-01"),as.Date("2016-01-01"),"day")
    QCdata <- as.data.frame(days)

然后我做類似的事情:

    QCdata[,3] <- data_list[[1]][,3][pmatch(QCdata[,1], data_list[[1]][,3])]

其中data_list只是包含我所有數據幀的列表。

您可以使用data.table進行自data.table

library(data.table)
setDT(Datamissing, key = "Y")

Datamissing[.(seq.Date(as.Date("1870-01-01"),
                       as.Date("1870-01-10"),"day"))]
#     X          Y          Z  A   B
# 1:  1 1870-01-01 12.9712691 10 109
# 2: NA 1870-01-02         NA NA  NA
# 3:  3 1870-01-03 14.0270033  8 107
# 4: NA 1870-01-04         NA NA  NA
# 5:  5 1870-01-05  1.3654924  6 105
# 6:  6 1870-01-06  0.6544578  5 104
# 7: NA 1870-01-07         NA NA  NA
# 8: NA 1870-01-08         NA NA  NA
# 9: NA 1870-01-09         NA NA  NA
#10: NA 1870-01-10         NA NA  NA

(我也將X保留為NA ,因為您沒有指定X實際上與Y一對一綁定)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM