我有一个类似下面的df,我正在尝试将datettime列转换为日期时间格式。
ID <- c("A","A","B","B")
datettime <- c("2015-12-03T13:04:06-06:00","2015-12-03T13:54:06-06:00","2015-12-03T16:04:06-06:00","2015-12-03T19:54:06-06:00")
df <- data.frame(ID,datettime)
我的数据集中的datettime列是一个字符。我试图将其转换为日期时间格式,但无法正确。
library(lubridate)
df$datettime <- ymd_hms(df$datettime)
#The problem here is the hours,minutes and seconds get messed up.
df$datettime <- as.POSIXct(df$datettime,format="%Y%m%d %H%M%S")
#This just ouputs NA's in the column
我想要的输出是
ID datettime
1 A 2015-12-03 13:04:06
2 A 2015-12-03 13:54:06
3 B 2015-12-03 16:04:06
4 B 2015-12-03 19:54:06
任何帮助将不胜感激。
答案 0 :(得分:2)
也试试这个:
df$datettime <- paste(substr(df$datettime,0,10),substr(df$datettime,12,19))
library(lubridate)
df$datettime <- ymd_hms(df$datettime)
答案 1 :(得分:1)
您忘记在日期中的分隔符之间添加短划线和冒号。这将为您提供所需的输出。
# original code from above:
ID <- c("A","A","B","B")
datettime <- c("2015-12-03T13:04:06-06:00","2015-12-03T13:54:06-06:00","2015-12-03T16:04:06-06:00","2015-12-03T19:54:06-06:00")
df <- data.frame(ID,datettime)
# convert to a POSIXct object
df$datettime <- as.POSIXct(df$datettime,format="%Y-%m-%dT%H:%M:%S")
df
ID datettime
1 A 2015-12-03 13:04:06
2 A 2015-12-03 13:54:06
3 B 2015-12-03 16:04:06
4 B 2015-12-03 19:54:06