【发布时间】:2016-11-30 11:56:16
【问题描述】:
由于数据大小,我未能解决我的 PHP/MySQL 或 Excel 问题,我现在正尝试使用 R 完成我的第一步,并且有点挣扎。问题是这样的:我有一个包含半年数据的逐秒 CSV 文件,看起来像这样:
metering,timestamp
123,2016-01-01 00:00:00
345,2016-01-01 00:00:01
243,2016-01-01 00:00:02
101,2016-01-01 00:00:04
134,2016-01-01 00:00:06
如您所见,每隔一段时间就会丢失几秒钟(不要问我,为什么这些值是在时间戳之前写入的,但这就是我接收数据的方式......)。现在我尝试计算缺失值的数量(= 秒)。
所以我的想法是
- 创建一个正确的向量(包括所有逐秒时间戳),
- 将给定的 CSV 文件与该新向量匹配,并且
- 总结所有没有价值的时间戳。
我设法通过以下代码完成了第 1 步:
RegularTimeSeries <- seq(as.POSIXct("2016-01-01 00:00:00", tz = "UTC"), as.POSIXct("2016-01-01 00:00:30", tz = "UTC"), by = "1 sec")
write.csv(RegularTimeSeries, file = "RegularTimeSeries.csv")
为了了解我做了什么,我还将向量导出到如下所示的 CSV:
"1",2016-01-01 00:00:00
"2",2016-01-01 00:00:01
"3",2016-01-01 00:00:02
"4",2016-01-01 00:00:03
"5",2016-01-01 00:00:04
"6",2016-01-01 00:00:05
"7",2016-01-01 00:00:06
不幸的是,我不知道如何继续第 2 步和第 3 步。我发现了一些非常相似的示例(http://www.r-bloggers.com/fix-missing-dates-with-r/、R: Insert rows for missing dates/times),但作为一个 R 新手,我很难将这些示例转换为我给定的秒以秒为单位的数据。
对新手的一些提示会非常有帮助 - 非常感谢您提前:)
【问题讨论】:
-
好吧,我想说的是,与其做你的方法,不如用它之前的值减去时间戳。如果大于 1,则输出该值。其他明智的离开它。过段时间会分享代码。
-
谢谢!是的,用我拥有的数据行减去“应该是”秒是最明显的解决方案(老实说,很明显我没有这个想法)。但无论如何,我的脑海里还有一些进一步的分析,比如找出最长的数据中断发生在哪里,它们在哪里发生了多长时间,等等。为此,无论如何我都需要一个具有“NA”值的数据集。但是对于第一步,您的解决方案当然非常简单:)
-
我在下面给出了我的代码作为答案,Bene。检查并告诉我是否有帮助