如何在R中将日期和时间转换为数值

时间:2018-09-13 23:18:26

标签: r datetime

对于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函数会将数据转换为数值>

2 个答案:

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