我有一个包含以下属性和字段的数据框:
print(sapply(df1, typeof))
SurveyUserStart
"integer"
print(df1)
SurveyUserStart
1 2016-10-17 08:55:13
2 2016-04-24 14:31:12
3 2016-09-01 15:17:54
4 2016-07-20 11:26:56
我正在尝试将此列SurveyUserStart
转换为datetime
格式。我在下面尝试了各种方法,但我总是得到NA
df1$SurveyUserStart <- as.POSIXlt(as.character(df1$SurveyUserStart), format="%d/%m/%Y %H:%M")
df1$SurveyUserStart <- as.character(df1$SurveyUserStart, format="%m/%d/%Y %H:%M:%S %p")
答案 0 :(得分:2)
正如评论中已经说明的那样,重要的是您将格式信息提供给函数。如果您的日期为2016-10-17 08:55:13
,则表示您有年 - 月 - 日小时:分:秒。如果你想转换到一个日期,你必须准确地给出你信息中的函数:
as.POSIXct(x = as.character(df3$SurveyUserStart), format = "%Y-%m-%d %H:%M:%S")
请注意,如果您使用POSIXct功能,您还必须在不同格式之间选择正确的分隔符(在您的情况下为 - )。
如果你使用包lubridate
,则不再需要它,但是你仍然需要在函数名中给出日期对象的正确顺序(y = year,m = month,d = day,...)导致以下功能:
ymd_hms(as.character(df3$SurveyUserStart))