我正在使用一个多年数据集,该数据集具有日期列(%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] 删除。
我来说两句