我有一个日期框架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 来完成此操作?
我还想选择包含每年某个月份的列,例如这些年中仅包含三月的列,最好的方法是什么?
简而言之,日期需要年、月和日,因此您无法直接转换为日期格式。你有两个选择。
选项 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)