在R中将列设置为datetime

aja*_*000 5 format datetime r type-conversion

我的数据集中的日期是这样的:20130501000000,我正在尝试将其转换为R中更好的日期时间格式

data1$date <- as.Date(data1$date, format = "%Y-%m-%s-%h-%m-%s")
Run Code Online (Sandbox Code Playgroud)

但是,我因需要原点而出错.在我将第一个单元格置于日期之后作为原点时,它将日期下的每个单元格转换为N/A. 这是正确的还是我应该尝试as.POSIXct()?

Dir*_*tel 12

这是一种有点退化的格式,但是anytime包的函数anytime()anydate()函数可以帮助你,而不需要任何显式的格式字符串:

R> anytime("20130501000000")       ## returns POSIXct
[1] "2013-05-01 CDT"
R> anydate("20130501000000")       ## returns Date
[1] "2013-05-01"
R> 
Run Code Online (Sandbox Code Playgroud)

不是我们在这里解析字符表示 - 从数字解析是错误的,因为我们使用冲突的启发式来理解存储数值的日期.

所以这里你的代码就变成了

data1$data <- anytime::anydate(data1$date)
Run Code Online (Sandbox Code Playgroud)

提供的data1$date是字符,否则包围as.character()它.

最后,如果您确实需要Datetime而不是Date(根据您的标题),请不要使用anydate()but anytime().