将三个不同的列合并为R中的日期

vie*_*291 12 r

现在,我在R中的数据文件中有3个单独的列作为年,月和日.如何将这三列合并为一列并让R了解它是日期?

这就是它现在的样子.

year   mon  day  gnp

1947    1   1   238.1   
1947    4   1   241.5   
1947    7   1   245.6   
1947    10  1   255.6   
1948    1   1   261.7   
1948    4   1   268.7
Run Code Online (Sandbox Code Playgroud)

akr*_*run 16

尝试:

  df$date <- as.Date(with(df, paste(year, mon, day,sep="-")), "%Y-%m-%d")
   df$date
  #[1] "1947-01-01" "1947-04-01" "1947-07-01" "1947-10-01" "1948-01-01"
  #[6] "1948-04-01"
Run Code Online (Sandbox Code Playgroud)


mte*_*rds 16

由于您的年、月和日类型是数字,因此最好使用lubridate包中的 make_date 函数。因此,tidyverse风格的解决方案是

library(tidyverse)
library(lubridate)

data %>%
  mutate(date = make_date(year, month, day))
Run Code Online (Sandbox Code Playgroud)


Mel*_*Mel 7

还有一个使用lubridateand的更简单的解决方案magrittr

df$date <- paste(df$year, df$mon, df$day, sep="-") %>% ymd() %>% as.Date()
Run Code Online (Sandbox Code Playgroud)

这对我有用,即使我用单(即 1)和双(即 01)数字写了几天和几个月。解析也是正确的。