我正在学习用 R 编写代码,目前正在进行 Bellabeat Google 数据分析 Capstone 项目。为此,我需要将具有格式为字符的日期时间值(即 4/12/2016 12:00:00 AM)的列转换为日期时间格式。我一直在尝试使用 as.POSIXct 函数,但每次这样做时,整个列值都会更改为 NA。我查了一下问题,发现很可能是因为我在 POSIXct 函数的格式字符串中有一个拼写错误。但是,我已经验证我使用的格式代码以及顺序和之间的空格都是正确的。然而,该函数不断将值更改为 NA。我需要帮助找出我编写函数的方式有什么问题,请!
这是我正在使用的数据的子集:
dput(head(hourly_calories$ActivityHour, 20))
c("4/12/2016 12:00:00 AM", "4/12/2016 1:00:00 AM", "4/12/2016 2:00:00 AM",
"4/12/2016 3:00:00 AM", "4/12/2016 4:00:00 AM", "4/12/2016 5:00:00 AM",
"4/12/2016 6:00:00 AM", "4/12/2016 7:00:00 AM", "4/12/2016 8:00:00 AM",
"4/12/2016 9:00:00 AM", "4/12/2016 10:00:00 AM", "4/12/2016 11:00:00 AM",
"4/12/2016 12:00:00 PM", "4/12/2016 1:00:00 PM", "4/12/2016 2:00:00 PM",
"4/12/2016 3:00:00 PM", "4/12/2016 4:00:00 PM", "4/12/2016 5:00:00 PM",
"4/12/2016 6:00:00 PM", "4/12/2016 7:00:00 PM")
这是我写的代码:
hourly_calories$ActivityHour <- as.POSIXct(hourly_calories$ActivityHour, format="%m/%d/%Y %I:%M:%S %p", tz="UTC")
运行此代码后,我得到以下结果:
dput(head(hourly_calories$ActivityHour, 20)
structure(c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_), class = c("POSIXct", "POSIXt"), tzone = "UTC")
如有任何反馈,我们将不胜感激!
convert_to_datetime
包中的janitor
功能怎么样?
hourly_calories$datetime<- convert_to_datetime(hourly_calories$ActivityHour, character_fun = lubridate::dmy_hms)