转换为日期时间导致 NA

Converting to datetime resulting in NA

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

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

如评论中所述,将格式信息提供给函数的顺序很重要。如果你的日期 2016-10-17 08:55:13 这意味着你有年月日 hour:minute:second。如果你想转换为一个日期,你必须准确地提供这个信息哟你的情况下的功能:

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