r子集数据集按日期范围跨多年

标记

我正在使用一个多年数据集,该数据集具有日期列(%Y-%m-%d)和多个变量的每日值。
在R中,如何按日期范围(即6月29日+/- 5天)对数据进行子集设置,但如何捕获所有年份的数据?

               DATE        A       B      C
1996-06-10 12:00:00    178.0    24.1    1.7

1996-06-11 12:00:00    184.1    30.2    1.1

1996-06-12 12:00:00    187.2    29.4    1.8

1996-06-13 12:00:00    194.4    35.0    5.3

1996-06-14 12:00:00    200.3    35.9    1.5

1996-06-15 12:00:00    138.9    15.1    0.0

...
后期邮件

基本R尝试。

窃取来自Kevin另一个答案的示例数据:

df <- data.frame(
  my_date = seq.Date(as.Date("1990-01-01"), as.Date("1999-12-31"), by = 1),
  x = rnorm(3652),
  y = rnorm(3652),
  z = rnorm(3652)
)

为选择设置变量:

month_num <- 6
day_num <- 29
bound <- 5

查找您年份范围内的关键日期:

keydates <- as.Date(sprintf(
  "%d-%02d-%02d", 
  do.call(seq, as.list(as.numeric(range(format(df$my_date, "%Y"))))),
  month_num,
  day_num
))

进行选择:

out <- df[df$my_date %in% outer(keydates, -bound:bound, `+`),]

检查它是否有效:

table(format(out$my_date, "%m-%d"))
#06-24 06-25 06-26 06-27 06-28 06-29 06-30 07-01 07-02 07-03 07-04 
#   10    10    10    10    10    10    10    10    10    10    10

1990年至1999年期间,每天/每月的一个有效值,以“ 06-29”为中心,每边5天

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章