【发布时间】:2020-02-08 13:18:04
【问题描述】:
这个问题是关于如何使用 R 替换数据框中缺失的日期和月份。考虑到下面的数据框,99 表示缺失的日期或月份,NA 表示完全未知的日期。
df<-data.frame("id"=c(1,2,3,4,5),
"date" = c("99/10/2014","99/99/2011","23/02/2016","NA",
"99/04/2009"))
我正在尝试根据以下标准替换缺失的日期和月份:
对于缺少日期但已知月份和年份的日期,替换日期将是从间隔中间(该月的第一天到最后一天)的随机选择。例如,对于 id 1,替换日期将从 2014 年 1 月 10 日中间到 2014 年 10 月 31 日采样。对于 id 5,这将是 01/04/2009 到 30/04/2009 的中间时间。值得注意的是不同月份的天数不同,例如10 月 31 天,4 月 30 天。
与 id 2 的情况一样,缺少日期和月份,替换日期是从间隔中间(一年中的第一天到最后一天)的随机选择,例如 01/01 /2011 至 31/12/2011。
请注意:完整的日期(例如 id 3 的情况)和 NA 不会被替换。
我已经尝试使用 seq 函数以及 as.POSIXct 和 as.Date 函数来获取要从中采样替换日期的日期序列。我遇到的困难是如何自动化 R 代码以获取日期间隔(它因不同的 id 而异)以及如何从间隔中间进行随机抽取。
预期输出将替换 id 1、2 和 5 的日期,但 id 3 和 4 的日期保持不变。非常感谢您对此提供任何帮助。
【问题讨论】: