【发布时间】:2020-10-21 12:02:55
【问题描述】:
问题:
我有一个多年数据集,我想在其中删除所有年份的一系列日期(例如 5 月 1 日至 8 月 31 日)。我想在所有年份中保留从 4 月 30 日到 9 月 1 日的日期。
数据示例:
dat <- data.frame(
"Date" = c("2000-08-01","2000-11-02","2001-08-03","2001-11-04","2002-06-05","2002-02-06","2000-08-07","2000-02-08","2001-06-09","2001-11-10"),
"Type" = c("A", "B", "C", "B", "C", "B", "A", "A", "C", "B"),
"Num" = c(8,6,5,6.5,5,5.5,6,7,4,3)
)
dat
我的尝试:
我创建了一个对象,其中包含所有年份的 5 月 1 日的日期,并使用 for 循环删除之后的天数,直到 8 月 31 日。我知道这是一种非常迂回的方式,所以我想知道是否有一个更简单的解决方案,因为这是一个相当大的数据集。
dates_start <- as.Date(c("2000-05-01", "2001-05-01", "2002-05-01"))
for(i in 1:length(dates_start)){
dat <- dat[!(as.Date(dat$Date) >= (dates_start[i] + 123)),]
}
编辑:
我计划多次运行此过滤/删除以获取不同的数据集,并且在某些情况下,我想删除月中的日期(例如 4 月 15 日至 8 月 16 日),因此仅删除某些月份不会在这里工作。
【问题讨论】: