过滤特定月份的日期列

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 包。

【讨论】:

另外,非常好!!!对于我正在尝试做的其他一些事情,这实际上会非常方便,不胜感激!!!

以上是关于过滤特定月份的日期列的主要内容,如果未能解决你的问题,请参考以下文章

如何让表格只显示活动月份和上个月?

根据可能位于特定列中任何位置的日期过滤文件

SQL查询以获取特定年份的当前日期(考虑月份和日期)的数据

按用户选择的日期过滤

过滤某些月份的 POSIXct 日期时间

如何在 django 中使用日期时间过滤器仅用于日期和月份?