如何操作从Excel导入到R的日期时间变量

时间:2018-06-02 23:28:00

标签: r dplyr lubridate

我正在使用readxl将多个Excel工作表导入到R中。这些表格中的每一个都包含对包含DateOfEventTimeOfEvent字段的交易的观察。

当我导入时间字段时,R会根据Excel第0天的日期将其转换为POSIXct对象 - 即1899-12-31 0:0:0

e.g。 dat <- data.frame(date=Sys.Date()+0:1, time=as.POSIXct(c(10,11), origin="1899-12-31"))

使用数据框中的数据,使用dplyr步骤清理我的数据,我将如何 -

  • 使用lubridate使用DateOfEvent值重新编码变量的日期部分?
  • 保持时间但让它们与日期无关,这样我就可以比较不同日期时间段中发生的事件(即删除1899年的日期,但是格式化日期以便我可以进行跨日比较)?

1 个答案:

答案 0 :(得分:0)

使用update()更改time中的年份 如果您想从time中提取时间对象(这将转换为UTC),请使用hms::as.hms()

library(tidyverse)

dat %>% 
  mutate(time = update(time, 
                       year = year(date), 
                       month = month(date), 
                       day = day(date)),
         hms = hms::as.hms(time))

        date                time      hms
1 2018-06-02 2018-06-02 16:00:10 23:00:10
2 2018-06-03 2018-06-03 16:00:11 23:00:11