如何用 space 分隔日期列中的项目,并且只输出前两个日期部分 ("YYYY MM")?

How to separate items in a date column by a space, and only output the first two date components ("YYYY MM")?

我有一个数据框(例如):

df <- data.frame(name = c("a","b","c"),
                 date = c("2019-01-15","2019-02-08","2019-03-10")
)

我想创建一个新列 (new_date),重新设置日期列的格式,使其看起来像:

name    date    new_date
a    2019-01-15 2019 01
b    2019-02-08 2019 02
c    2019-03-10 2019 03

我一直在尝试使用 strsplit,但没有成功。

library(dplyr)

df %>% 
  mutate(new_date = format(as.Date(date), "%Y %m"))

  name       date new_date
1    a 2019-01-15  2019 01
2    b 2019-02-08  2019 02
3    c 2019-03-10  2019 03

假设您的数据是日期格式,lubridate 有一些很好的函数来提取相关信息

library(lubridate)
df$new_date <- paste(year(df$date),month(df$date), sep = " ")

> df

  name       date new_date
1    a 2019-01-15   2019 1
2    b 2019-02-08   2019 2
3    c 2019-03-10   2019 3

来自基地 R

df$date = as.POSIXct(df$date)
df$new_date = format(df$date,'%Y %m')
df
  name       date new_date
1    a 2019-01-15  2019 01
2    b 2019-02-08  2019 02
3    c 2019-03-10  2019 03