添加缺少报告日期,不包括具有指定值的周末

时间:2018-05-10 19:21:40

标签: r time-series zoo

我有一张包含大量报告空白的表(缺少报告日期)。我想通过将缺少的报告日期添加到每个帐户(由ID表示)来修复数据。

例如,我们将开始日期设置为2014-07-01,将结束日期设置为2018-03-13。报告日期共计970个,不包括周末。

下表如下......让我们称之为" df"。我的原始df是下面显示的数据框,没有以GAP开头的行。以GAP开头的行是我想要添加的行。

对于第1步,我想将所有缺少的报告日期添加到此表中(以下面的GAP开头的行),然后对于第2步,我想填写所有"余额"我从步骤1添加了0。对于第3步,我想用间隙之前的最后一个值填充其他变量。最后一步,我想将它应用于所有ID。

                     ID      report_date    balance    other_v1    other_v2
DAY 1                 1       7/1/2014        1500         0
DAY 2                 1       7/2/2014        1500        0.1
GAP 1 (DAY 3)         1       7/3/2014          0         0.1
GAP 2 (DAY 4)         1        ...              0         0.1
...                   1        ...              0...      0.1..
GAP 30 (DAY 32)       1       8/10/2014         0         0.1
DAY 33                1       8/11/2014       1500        0.3
DAY 34                1       8/12/2014       1600        0.3
DAY 35                1       8/13/2014       1600        0.25
GAP 31 (DAY 36)       1       8/14/2014         0         0.25
GAP 32 (DAY 37)       1       8/15/2014         0         0.25
...                   1       ...               0         ...
DAY 970 (OR GAP N)    1       3/13/2018         0         ...

1 个答案:

答案 0 :(得分:0)

对于第1步,可以创建一个包含所需值的新数据库,如下所示:

df = data.frame(as.Date("07/01/2014", "%m/%d/%Y"):as.Date("03/13/2018", "%m/%d/%Y"))
names(df) = "date"

df$date = as.Date(df$date, origin = '1970-01-01')
df$weekday = weekdays.Date(df$date)

df = df[-which(df$weekday=="saturday"),]
df = df[-which(df$weekday=="sunday"),]

然后你只需要使用cbind(your_db, df),你就有了你的日期栏! 对于步骤2和3,我需要可重复的数据.. 如果你能给我们一个可重复的例子,它会更容易,更快地帮助你! :)