过滤特定月份的日期列
Posted
技术标签:
【中文标题】过滤特定月份的日期列【英文标题】:Filter date column for certain months 【发布时间】:2018-08-06 06:57:43 【问题描述】:我想将每月的时间序列转换为季度的时间序列,只保留一年中的 4 个值。我在数据框中有一个日期列作为这种每月格式的整数:
192707
192708
192709
....
我已将其转换为日期格式:
library(zoo)
df$date<-as.Date(as.yearmon(as.character(df$date), format = '%Y%m'), frac=1)
接下来我想只保留一年中的 4 个月(1 月、4 月、7 月、10 月)这样的东西,但我不知道该怎么做:
df<-subset(df, month(df$date)==1 | month(df$date)==4 |
month(df$date)==7 | month(df$date)==10)
有没有办法从日期列中提取月份?
【问题讨论】:
我建议使用一个包。具体来说,请参阅 tibbletime 包中的 this vignette。 您可以从 yearmon 变量ym
中获取月份,而无需使用 cycle(ym)
将其转换为日期。
感谢您的建议,tibbletime 非常好。 cycle(ym) 也很不错!!
【参考方案1】:
是的,你很亲密。使用 months
函数给出日期月份的全名,然后使用 month.name
我们可以得到你想要的 4 个月:
df <- df[months(df$date) %in% month.name[c(1,4,7,10)], ]
【讨论】:
【参考方案2】:另一个选项可能是使用month number i.e. 1, 4, 7, 10
:
df[month(df$date) %% 3 == 1,]
在此可以避免名称比较。因此它应该很快。
注意:这里必须提一下,OP 使用了zoo
包。
【讨论】:
另外,非常好!!!对于我正在尝试做的其他一些事情,这实际上会非常方便,不胜感激!!!以上是关于过滤特定月份的日期列的主要内容,如果未能解决你的问题,请参考以下文章