问题:
我有一个多年数据集,我想在其中删除所有年份的日期范围(例如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日为止的天数。我知道这是一种极为round回的方式,所以我想知道是否有一个更简单的解决方案因为这是一个相当大的数据集。
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日),因此仅删除某些月份在这里行不通。
您可以动态创建日期以删除:
library(dplyr)
library(lubridate)
start <- '04-15'
end <- '08-16'
dat %>%
mutate(Date = as.Date(Date),
year = year(Date)) %>%
filter(!(Date >= ymd(paste(year, start, sep = '-')) &
Date <= ymd(paste(year, end, sep = '-'))))
# Date Type Num year
#1 2000-11-02 B 6.0 2000
#2 2001-11-04 B 6.5 2001
#3 2002-02-06 B 5.5 2002
#4 2000-02-08 A 7.0 2000
#5 2001-11-10 B 3.0 2001
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句