将“2015M01”形式的变量转换为R中的日期格式?

0 r lubridate

我有一个日期框架df,看起来像这样:

 month  values
2012M01  99904
2012M02  99616
2012M03  99530
2012M04  99500
2012M05  99380
2012M06  99103
2013M01  98533
2013M02  97600
2013M03  96431
2013M04  95369
2013M05  94527
2013M06  93783
Run Code Online (Sandbox Code Playgroud)

月份以“M01”、“M02”...等形式书写。现在我想将此列转换为日期格式,有没有办法在 R 中使用 lubridate 来完成此操作?

我还想选择包含每年某个月份的列,例如这些年中仅包含三月的列,最好的方法是什么?

nei*_*fws 5

简而言之,日期需要年、月和日,因此您无法直接转换为日期格式。你有两个选择。

选项 1:使用 转换为年月格式zoo::as.yearmon

library(zoo)
df$yearmon <- as.yearmon(df$month, "%YM%m")
# you can get e.g. month from that
months(df$yearmon[1])
# [1] "January"
Run Code Online (Sandbox Code Playgroud)

选项 2:通过假设该天始终是该月的第一天来转换为日期。

df$date <- as.Date(paste(df$month, "01", sep = "-"), "%YM%m-%d")
Run Code Online (Sandbox Code Playgroud)

对于选择(我认为你的意思是选择行,而不是列),你已经拥有了你需要的一切。例如,仅选择 2013 年 3 月:

library(dplyr)
df %>% filter(month == "2013M03")
Run Code Online (Sandbox Code Playgroud)