我的数据如下:

df <- structure(list(site = c("A", "A", "A", "A", "B", "B", "B", "B", 
"A", "A", "A", "A", "B", "B", "B", "B"), year = c(2019L, 2019L, 
2019L, 2019L, 2019L, 2019L, 2019L, 2019L, 2020L, 2020L, 2020L, 
2020L, 2020L, 2020L, 2020L, 2020L), date = c("2019-08-12", "2019-08-14", 
"2019-10-16", "2019-10-27", "2019-08-10", "2019-08-13", "2019-10-01", 
"2019-10-16", "2020-08-08", "2020-08-11", "2020-10-14", "2020-10-16", 
"2020-08-07", "2020-08-19", "2020-10-15", "2020-10-20")), 
class = "data.frame", row.names = c(NA, 
-16L))

对于每个站点和每年,我希望使用以下条件对日期范围进行子集:

从8月15日之前的最晚日期开始,到10月15日之后的最早日期结束.

提前感谢您!

推荐答案

按"地点"、"年份"分组,filterbetween的"日期",date是小于8月15日的值,"日期"值刚好大于10月15日.date[date < as.Date(ISOdate(year, 8, 15))],对小于8月15日的日期进行子集,用max换行返回最新的子集日期.同样,最早的日期从10月15日开始计算.

library(dplyr)
df %>% 
  mutate(date = as.Date(date)) %>%
  group_by(site, year) %>% 
  filter(between(date, max(date[date < as.Date(ISOdate(year, 8, 15))]), 
     min(date[date > as.Date(ISOdate(year, 10, 15))]))) %>%
  ungroup

R相关问答推荐

使用map()内的公式()创建多个公式

在图内移动y轴上的标签

使用gsim删除特殊词

在R中,将一个函数作为输入传递给另一个函数时进行参数判断

Select 与特定列中最大值对应的数据帧行

从载体创建 pyramid

R形式的一维数字线/箱形图样式图表

geom_Ribbon条件填充创建与数据不匹配的形状(ggplot 2 r)

寻找图片边缘

根据R中的另一个日期从多列中 Select 最近的日期和相应的结果

大规模重新标记haven标签数据

根据多个条件增加y轴高度以适应geom_text标签

在连续尺度上转置标签[瀑布图,R]

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

正则表达式在第二个管道和第二个T之后拆分R中的列

在纵向数据集中创建新行

将具有坐标列表列的三角形转换为多个多边形

为什么我对圆周率图的蒙特卡罗估计是空的?

在ggploy中创建GeV分布时出错

有毒元素与表观遗传年龄的回归模型