【发布时间】:2018-06-20 05:49:24
【问题描述】:
我对 R 相当陌生,并且正在尝试确定是否可以使用 R 来帮助填补我正在使用的大量大型数据集中的缺失值。我会尽力解释。
我正在使用的数据集包含格式为 HH:MM:SS 的时间数据。这是不规则的,因为没有两个数据集具有相同的时间戳,并且时间戳条目记录了 2 小时内的事件。它看起来像这样。
1. Date, Time_hms, Event
2. 9/22/2015, 00:00:00, 5
3. 9/22/2015, 00:00:24, 1
4. 9/22/2015, 00:00:24, 4
5. 9/22/2015, 00:01:42, 7
6. 9/22/2015, 00:02:04, 3
8. 9/22/2015, 00:02:35, 2
9. 9/22/2015, 00:03:02, 4
我想做的是每隔一分钟添加缺失的行,使其看起来像这样。
1. Date, Time_hms, Event
2. 9/22/2015, 00:00:00, 5
3. 9/22/2015, 00:00:24, 1
4. 9/22/2015, 00:00:24, 4
5. 9/22/2015, 00:01:00, 4 # Summary row to be inserted
6. 9/22/2015, 00:01:42, 7
7. 9/22/2015, 00:02:00, 7 # Summary row to be inserted
8. 9/22/2015, 00:02:04, 3
9. 9/22/2015, 00:02:35, 2
10. 9/22/2015, 00:03:00, 2 # Summary row to be inserted
11. 9/22/2015, 00:03:02, 4
如果可能,我希望在行中填写在该范围内发生的事件。
在尝试解决这个问题时,我发现并尝试了这种方法Insert rows for missing dates/times。我尝试使用 POSIXct 但由于日期格式而失败。我也考虑过 padr 和 fill_by_function,但不确定这是否是正确的方法。有没有严格使用 HH:MM:SS 格式的方法?
再说一次,我只是在学习 R 并且不确定如何处理这个问题。任何帮助或建议将不胜感激!
编辑:希望我做对了。再次感谢!
dput(elements)
structure(list(var1 = c("Date", "9/22/2015", "9/22/2015", "9/22/2015",
"9/22/2015", "9/22/2015", "9/22/2015", "9/22/2015"), var2 = c("Time_hms",
"00:00:00", "00:00:24", "00:00:24", "00:01:42", "00:02:04", "00:02:35",
"00:03:02"), var3 = c("Event", "5", "1", "4", "7", "3", "2",
"4")), .Names = c("var1", "var2", "var3"), row.names = c(NA,
8L), class = "data.frame")
【问题讨论】:
-
你能通过
dput()分享你的样本数据吗?这使得它可以复制/粘贴并保留数据框结构和列类。 -
至于策略(除非数据集几乎超出您的 RAM 限制):首先,创建一个新数据框,其中只有一列由您的“目标”时间序列填充,其次,加入两个数据框“时间”列
-
潜在的解决方案是将日期和时间合并到一列,然后使用 POSIXct?但是,之后我必须分开日期和时间。
标签: r time time-series missing-data