代码之家  ›  专栏  ›  技术社区  ›  Recology

按R中未指定年份的日期条件筛选

  •  0
  • Recology  · 技术社区  · 3 年前

    我有一个数据框,有一个“日期”列。格式为:“Y%-m%-d%”

    > class(df$date)
    [1] "character"
    
    > head(df$date)
    [1] "1989-03-01" "2002-03-24" "2021-04-02" "2004-02-01" "2020-03-26" "1996-04-06"
    

    我想将我的数据框子集,去掉[01-01;01-05]之间的所有日期(包括1月1日至5日) 不管是哪一年 ,这就是给我带来麻烦的原因。

    我该怎么做?非常感谢你。

    编辑:看来我可能表达得不好。我想从数据集中删除1月1日至5日这段时间。因此,要把接下来的事情,一年中的其他时间,每一年。

    1 回复  |  直到 3 年前
        1
  •  3
  •   Ben    3 年前

    这里是另一种选择,转换为角色。

    df[format(as.Date(df$date), "%m%d") > "0105",]
    
        2
  •  1
  •   akrun    3 年前

    这里有一个选择,我们选择 substring 排除年份部分,并使用 01-01 01-05 使用 %in%

    subset(df, !substring(date, 6) %in% sprintf("01-%02d", 1:5))
    

    或者可能会转化为 Date 类并提取 month , day 创造逻辑

    library(dplyr)
    library(lubridate)
    df %>%
       mutate(date = ymd(date)) %>%
       filter(month(date) == 1, day(date) > 5)