这是一个奇怪的神器。我正在将成千上万个字符向量转换为日期时间类,如下所示:
alles$DateTime=as.POSIXct(alles$roughdate, tz="EST",format="%Y%m%d.%H%M%S.%OS")
非常直接。字符串(alles$roughdate
)的格式为YYYYMMDD.HHMMSS.ss
,.ss
为毫秒。如上所述,上述代码可以正常工作。但是,如果毫秒等于.61,则返回NA而不是日期时间值。
这不是太糟糕,但在处理数万个单元格时,几百个总是作为NA返回。毫秒总是.61,与其余的日期无关。我需要那些日期。
我已经尝试隔离这些文件,然后再将两个数据框合并在一起,但这似乎不起作用。我所有的约会都是NA。
有什么想法?
实施例
vec <- c("20150101.010101.60", "20150101.010101.61", "20150101.010101.62")
as.POSIXlt(vec, tz="EST", format="%Y%m%d.%H%M%S.%OS")
#[1] "2015-01-01 01:01:60 EST" NA "2015-01-01 01:01:01 EST"
答案 0 :(得分:3)
如果您将时间部分的格式更改为%H%M%OS
而不是%H%M%S.%OS
,则似乎正确解析。您可能需要调整options
,所以请看:
as.POSIXlt(vec, tz = "EST", format = "%Y%m%d.%H%M%OS")
#[1] "2015-01-01 01:01:01 EST" "2015-01-01 01:01:01 EST"
#[3] "2015-01-01 01:01:01 EST"
options(digits.secs = 2)
as.POSIXlt(vec, tz = "EST", format = "%Y%m%d.%H%M%OS")
# [1] "2015-01-01 01:01:01.60 EST" "2015-01-01 01:01:01.61 EST"
# [3] "2015-01-01 01:01:01.62 EST"