我将一系列 csv 文件导入 R。这些文件包含日期/时间列、id 和两列温度值。
这将举例说明数据的样子:
id<-c(1,2,3,4)
date.time<-as.character(c("12/03/17 00:21:28", "12/03/17 02:21:28", "12/03/17 04:21:28", "12/03/17 06:21:28"))
temp1<-c(-3.568,-3.568,-3.598,-3.598)
temp2<-c(-11.577,-11.577,-11.541,-11.433)
df<-data.frame(id,date.time,temp1,temp2)
因为日期/时间不是我想要的格式,所以我一直在使用 strptime 并将它们格式化为 POSIXlt。
像:
df$date.time<-strptime(df$date.time, "%d/%m/%y %H:%M:%S")
df$date.time<- as.POSIXlt(df$date.time, "%Y/%m/%d %H:%M:%S", tz="GMT0")
这工作正常,并提供如下所示的数据:
id date.time temp1 temp2
1 2017-03-12 0:21:28 -3.568 -11.577
2 2017-03-12 2:21:28 -3.568 -11.577
3 2017-03-12 4:21:28 -3.598 -11.541
4 2017-03-12 6:21:28 -3.598 -11.433
但是,然后我想将 date.time 列的时间部分四舍五入到最接近的小时。我一直在使用:
df$date.time<-round(df$date.time, units="hours")
这在 99% 的情况下都可以正常工作。但是,在某些文件中,R 似乎随机删除了 date.time 值,并给出了 NA。每个文件中只有一个或两个值被删除,我看不出这些特定值被删除的任何原因。例如:
id date.time temp1 temp2
1 2017-03-12 0:00:00 -3.568 -11.577
2 NA -3.568 -11.577
3 2017-03-12 4:00:00 -3.598 -11.541
4 2017-03-12 6:00:00 -3.598 -11.433
从我读过的内容来看,日期/时间值可能很挑剔,但这似乎很随机。
有谁知道可能导致此问题的原因以及是否有更好的方法来舍入 POSIXlt 值的时间部分?
更新:似乎唯一被删除的时间是 3 月 12 日凌晨 2 点。因此,许多应该四舍五入到 2017-03-12 02:00:00 的时间都被替换为 NA。但这不会发生在所有的 csv 文件中,只有大约一半。为什么 R 在读取这个特定日期时遇到问题?
谢谢!