0

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

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

我正在尝试将此列转换SurveyUserStartdatetime格式。我尝试了以下各种方法,但我总是导致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")
4

1 回答 1

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))
于 2017-04-28T06:59:12.993 回答