如何过滤不在另一行中的事件值的特定时间范围内的数据框中的行?

吉萨姆

我有一个结构如下的数据框:

example <- data.frame(id = c(1,1,1,1,1,1,1,2,2,2,2,2),
                      event = c("email","email","email","draw","email","email","draw","email","email","email","email","draw"),
                      date = c("2020-03-01","2020-06-01","2020-07-15","2020-07-28","2020-08-07","2020-09-01","2020-09-15","2020-05-22","2020-06-15","2020-07-13","2020-07-15","2020-07-31"))

我正在尝试过滤掉不包含在事件列中指示抽奖事件之前30天范围内的每个ID中的电子邮件。这是我想得出的结果:

desiredResult <- data.frame(id = c(1,1,1,1,2,2,2),
                      event = c("email","draw","email","draw","email","email","draw"),
                      date = c("2020-07-15","2020-07-28","2020-09-01","2020-09-15","2020-07-13","2020-07-15","2020-07-31"))

我只需要包括在每个抽奖活动开始前30天内发生的活动。我不确定如何实现

罗纳克·沙

在每id行中,我们都可以选择距-30天的行event = "draw"

library(dplyr)

example %>%
  mutate(date = as.Date(date)) %>%
  group_by(id) %>%
  filter(Reduce(`|`, purrr::map(date[event == 'draw'],
                     ~between(date, .x - 30, .x))))

#     id event date      
#  <dbl> <chr> <date>    
#1     1 email 2020-07-15
#2     1 draw  2020-07-28
#3     1 email 2020-09-01
#4     1 draw  2020-09-15
#5     2 email 2020-07-13
#6     2 email 2020-07-15
#7     2 draw  2020-07-31

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python Pandas 如何根据下一行(在特定时间范围内)从数据框中删除行

使用Python如何在Pandas数据框中的每一行的范围内生成随机数?

计算特定时间范围内数据框列中的最大出现次数

如何在Django中过滤特定时间范围内的对象

如何检查数据表中每一行的列值是否在另两个范围内

如何从数据框中绘制行的特定时间间隔?

mongodb查找日期范围内但一天中特定时间的值

如何为熊猫数据框中的另一列中的特定值更新一行中的列值?

如何在数据框中的行范围内输出最大值?

如何将两个数据框与日期进行比较,在特定时间间隔内返回匹配日期,并为新数据框中的每一行标记不匹配的日期

如何获得值在范围内的第一行

选择特定时间范围内的行

Python Pandas-过滤pandas数据框以获取一行中具有最小值的行,而另一行中的每个唯一值

如果值在范围内以添加为数据框中的新列,如何过滤值

如何删除值在范围内的数据框的行?

搜索特定列中的一系列数字并隐藏不在该范围内的行

如何使用范围内的每个值自动过滤另一张工作表中的数据?

在另一个命名范围内的命名范围中的引用特定行

根据第二列中的值在第二个数据框中的任何行的容差范围内,过滤数据框列

过滤在r中事件“ A”的时间范围内发生的事件

如何找到日期时间值在数据框中的上一行和下一行?

根据另一行数据框中的值检索数据行中的值

如果特定列范围内缺少任何值,如何更新数据框中的列值?

检查一个数据框中的日期是否在另一数据框中的日期范围内,并在为true时返回行

如何识别在特定时间范围内发生的行?

计算表中每一行的范围内的值

创建一列,根据另一行中的事件将值分配给数据框中的一行

如何根据另一行更新数据框中列的值?

替换超出范围的值引用r中每一行的另一个数据框