【问题标题】:Filter Data by Seasonal Ranges Over Several Years Based on Month and Day Column in R Studio根据 R Studio 中的月份和日期列按几年的季节范围过滤数据
【发布时间】:2021-01-17 17:29:01
【问题描述】:

我正在尝试过滤一个大型数据集,以包含几年内几天和几个月之间的结果,以评估季节性目标。我的季节是从 3 月 15 日到 9 月 15 日。我不知道如何过滤这些日子,以便它们仅适用于 3 月和 9 月,而不适用于该范围内的其他月份。我的数据框非常大并且包含专有信息,但我认为最重要的信息是日期按列描述:SampleDate(日期格式为 %y%m%d)、日期(数字)和月份(数字)。

我尝试过使用多个条件进行过滤,如下所示:

S1 <- S1 %>%
  filter((S1$month >= 3 & S1$day >=15) , (S1$month<=9 & S1$day<=15 ))

我还尝试使用 between 为我没有运气的数据设置范围:

 S1 %>% filter(between(SampleDate, as.Date("2010-03-15"), as.Date("2010-09-15") & 
                as.Date("2011-03-15"), as.Date("2011-09-15")&
               as.Date("2012-03-15"), as.Date("2012-09-15")&
               as.Date("2013-03-15"), as.Date("2013-09-15")&
               as.Date("2014-03-15"), as.Date("2014-09-15")&
               as.Date("2015-03-15"), as.Date("2015-09-15")&
               as.Date("2016-03-15"), as.Date("2016-09-15")&
               as.Date("2017-03-15"), as.Date("2017-09-15")&
               as.Date("2018-03-15"), as.Date("2018-09-15")))

我对 R 很陌生,在网上找不到任何解决方案。我知道必须有一种简单的方法来做到这一点!非常感谢任何帮助!

【问题讨论】:

标签: r filter


【解决方案1】:

可能是这样的:

library(data.table)
df <- setDT(df)

# convert a date like this '2020-01-01' into this '01-01'
df[,`:=`(month_day = str_sub(date, 6, 10))]
df[month_day >= '03-15' & month_day <= '09-15']

【讨论】:

  • 我在尝试此操作时收到一条错误消息,提示找不到 month_day。
  • 可能包含库(stringr)
  • 我最终这样做了,它似乎有效! S1 % filter(SampleDate >= as.Date(paste(year(SampleDate), 03, 15, sep = "-")), SampleDate
猜你喜欢
  • 1970-01-01
  • 2012-12-14
  • 2016-08-22
  • 1970-01-01
  • 2012-08-10
  • 2016-11-25
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
相关资源
最近更新 更多