对于R来说我比较陌生,我有一个数据集,我试图将日期和时间转换为数字值。日期和时间的格式为01JUN17:00:00:00,位于名为pickle_datetime的变量下。我尝试使用代码
cab_small_sample$pickup_datetime <- as.numeric(as.Date(cab_small_sample$pickup_datetime, format = '%d%b%y'))
但是这种方式不包含时间,我试图将时间格式添加到代码的格式部分,但仍然无法正常工作。是否有R函数会将数据转换为数值>
答案 0 :(得分:1)
R有两个主要的时间类别:“日期”和“ POSIXct”。 POSIXct是日期时间类,您可以在? DateTimeClasses
上获取所有详细信息。数据输入时使用的格式的帮助页面位于?striptime
。
cab_small_sample <- data.frame(pickup_datetime = "01JUN17:00:00:00")
cab_small_sample$pickup_dt <- as.numeric(as.POSIXct(cab_small_sample$pickup_datetime,
format = '%d%b%y:%H:%M:%S'))
cab_small_sample
# pickup_datetime pickup_dt
#1 01JUN17:00:00:00 1496300400 # seconds since 1970-01-01
我发现“破坏性地重新分配值”通常不是一个好主意,因此,在确定我的代码可以正常工作之前,我不会将其分配给同一列(“最佳实践”) 。 (而且我总是将未经修改的副本放在安全的地方。)
答案 1 :(得分:1)
lubridate
是用于处理日期的非常方便的程序包。只要您可以提供组件的顺序,它就包含各种功能,可以为您执行日期/时间解析。在这种情况下,由于您的数据采用day-month-year-hms格式,因此可以使用dmy_hms
函数。
library(lubridate)
cab_small_sample <- dplyr::tibble(
pickup_datetime = c("01JUN17:00:00:00", "01JUN17:11:00:00"))
cab_small_sample$pickup_POSIX <- dmy_hms(cab_small_sample$pickup_datetime)