【问题标题】: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) 也很不错!!

标签: r date filter


【解决方案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 包。

    【讨论】:

    • 另外,非常好!!!对于我正在尝试做的其他一些事情,这实际上会非常方便,不胜感激!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2011-08-05
    • 1970-01-01
    • 2020-04-25
    相关资源
    最近更新 更多