R 如何筛选特定时间段,该时间段必须完整(有所有月份)?

R 如何筛选特定时间段,该时间段必须完整(有所有月份)?,r,dataframe,date,subset,R,Dataframe,Date,Subset,我有一个大数据集,重复的绘图测量(计数数据)覆盖了不同研究领域的大时间跨度。我现在喜欢过滤数据,这样我只剩下完整的野外季节(4月至11月)。一些地区在同一年进行抽样,其他地区在不同年份进行抽样 到目前为止,我已经: arthropods.all.sea <- with(arthropods.all, arthropods.all[month(Date) >= 4 & month(Date) < 12, ]) arthropods.all.sea=4个月(日期)% 按(

我有一个大数据集,重复的绘图测量(计数数据)覆盖了不同研究领域的大时间跨度。我现在喜欢过滤数据,这样我只剩下完整的野外季节(4月至11月)。一些地区在同一年进行抽样,其他地区在不同年份进行抽样

到目前为止,我已经:

arthropods.all.sea <- with(arthropods.all, arthropods.all[month(Date) >= 4 & month(Date) < 12, ])
arthropods.all.sea=4个月(日期)<12,]
但我不明白,如何将每个地区的野外季节必须完整的条件包括在内

非常感谢您的帮助

我创建了一个虚拟数据集,以说明我的真实数据集是什么样子的

df1 <- data.frame(ID = c("Ki_1","Ki_2","Ki_2","Ki_3","Ho_1","Ho_2"),
                  Date = as.POSIXct(c('1999-06-23', '1998-09-25', '1998-08-22', '2000-08-22', '1990-05-01', '1991-07-06')),
                  Area = c("Kin", "Kin", "Kin", "Kin","Hohe", "Hohe"),
                  Species=c("Species1","Species1","Species2","Species1","Species10","Species11"),
                  Count=c(12,23,21,14,7,2))

df1您只能选择那些数据中包含从4月到11月的所有月份的
区域

library(dplyr)
library(lubridate)

result <- df1 %>%
            mutate(year = year(Date), month = month(Date)) %>%
            group_by(Area, year) %>%
            filter(all(4:11 %in% month) & month %in% 4:11)
库(dplyr)
图书馆(lubridate)
结果%
变异(年=年(日),月=月(日))%>%
按(地区、年份)分组%>%
筛选器(全部(4:11%在%month中)和%month%在%4:11中)

您能否使用dput()共享一个可复制的输出?我刚刚更新了我的问题,以包含一个虚拟数据集。您知道哪些区域在同一年的4月至11月进行采样,哪些区域在不同的年份进行采样吗?是的,我知道哪些区域在哪一年进行采样。代码运行,但输出的data.frame与原始数据完全相同?不,例如,一些地区只有几年内的五月数据。我想知道这一年是否应该包括在内?由于可能有一年内某一地区6月份的数据,但没有其他年份的数据……感谢您的帮助!是的,我只想要其中包括的每个地区的年份。4:12月份的数据是完整的。代码似乎有作用,因为它改变了数据集-但不知何故,数据集仍然不限于4:12个月,所有其他月份仍然存在?我不知道这里发生了什么…它是一个子集的东西,但它没有做什么,我正在寻找…对不起,为混乱和非常感谢!你能解释一下为什么你需要两次4:12%的百分比吗?这样我下次就知道了?
all(4:11%在%月)
确保从4-11开始的所有月份都出现在每个
组中
每个
年中
,这也意味着可能存在第1-3个月的数据以及第4-11个月的数据,以删除那些额外的1-3个月的数据,我们使用另一个
月%在%4:11