转换为datetime导致NA

时间:2017-04-28 01:18:30

标签: r datetime dataframe posixlt

我有一个包含以下属性和字段的数据框:

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")

1 个答案:

答案 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))