如果我的月、日和年在不同的列中,我可以使用 R 包 lubridate 来解析日期吗?

Can I use the R package lubridate to parse dates if my month, day, and year are in separate columns?

我是 R 的新手,但我正在尝试学习如何使用它来使我的数据分析更具可重现性。我将我的日期输入三列作为下车日期,三列作为取件日期(一列为月,一列为日,一列为年)。我需要能够让 R 将其识别为日期,以便我可以将字段中的时间计算为一年的一小部分 (days/365)。我安装了 lubridate 包并尝试使用 mdy() 函数,但它给了我以下错误消息:

Error: Column `drop_off_date` must be length 150 (the number of rows) or one, not 450
In addition: Warning message:
All formats failed to parse. No formats found. 

我也试过使用反引号,但也没用。我认为这可能是因为我的日期在不同的列中设置的方式,但我不确定。这是我为此使用的代码部分:

mutate(drop_off_date = mdy(dropoff_month, dropoff_day, dropoff_year),
         pickup_date = mdy(pickup_month, pickup_day, pickup_year),

有没有人对不同的功能有任何建议,或者我可以修复什么来使用这个功能?

lubridate 函数采用单个字符串向量。我的第一条评论建议 paste0 也可以工作,但不能直接使用(请参阅下面的代码),因此您需要包含一个 separator(例如 paste 的默认 " " space).

library(lubridate)
### wrong
mdy(10, 13, 2018)
# Warning: All formats failed to parse. No formats found.
# [1] NA NA NA

### some fixed
mdy(paste(10, 13, 2018))
# [1] "2018-10-13"

library(dplyr)
data.frame(y=c(2018,2019), m=c(10,9), d=c(30,1)) %>%
  mutate(date = mdy(paste(m, d, y)))
#      y  m  d       date
# 1 2018 10 30 2018-10-30
# 2 2019  9  1 2019-09-01