添加缺失的报告日期,不包括具有指定值的周末
Posted
技术标签:
【中文标题】添加缺失的报告日期,不包括具有指定值的周末【英文标题】:Add Missing Report Dates Excluding Weekends with Specified Values 【发布时间】:2018-05-10 19:21:40 【问题描述】:我的表格中有很多报告空白(缺少报告日期)。我想通过将缺少的报告日期添加到每个帐户(由 ID 表示)来修复数据。
例如,我们将开始日期设置为 2014-07-01,将结束日期设置为 2018-03-13。总共有 970 个报告日期,不包括周末。
表格如下所示...我们称之为“df”。我原来的 df 是下面显示的数据框,没有以 GAP 开头的行。以 GAP 开头的行是我要添加的行。
对于第 1 步,我想将所有缺少的报告日期添加到此表中(下面以 GAP 开头的行),然后对于第 2 步,我想用 0 填写我从第 1 步添加的所有“余额” .而对于第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 ...
【问题讨论】:
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。避免使用带有“...”的不可用示例,因为这很难测试。 【参考方案1】:对于第 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 步,我需要可重现的数据。
如果你能给我们一个可重复的例子,那么帮助你会更容易、更快! :)
【讨论】:
以上是关于添加缺失的报告日期,不包括具有指定值的周末的主要内容,如果未能解决你的问题,请参考以下文章
将 pandas 列转换为 datetime64,包括缺失值