现在,我在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)
还有一个使用lubridateand的更简单的解决方案magrittr:
df$date <- paste(df$year, df$mon, df$day, sep="-") %>% ymd() %>% as.Date()
Run Code Online (Sandbox Code Playgroud)
这对我有用,即使我用单(即 1)和双(即 01)数字写了几天和几个月。解析也是正确的。