r - 在特定列中与 grep 匹配的模式后过滤行

标签 r filter dplyr grepl

我有一个数据集(名为desktop),其中包含来自网络跟踪器的按时间顺序排列的信息,其中一列中包含不同用户访问的 URL,另一列中包含用户 ID。为了进行搜索引擎分析,我尝试过滤包含用户向 Google 提交搜索查询的 URL 的所有行,我可以使用以下代码行来完成此操作:

data_google <- dplyr::filter(desktop, grepl('\\bgoogle.com/search\\b', desktop$url, ignore.case = T))

这很好用。但是,我不仅对包含搜索查询的 URL 感兴趣,还对用户提交查询后访问的网页感兴趣。换句话说,用户实际点击的 Google 结果页面中的链接。

是否可以不仅过滤 url 与模式匹配的行,还可以过滤该行之后的行?

如有任何帮助,我们将不胜感激,谢谢

最佳答案

以 iris 数据集为例。我将插入以“set”开头的所有物种,然后获取其后的行。这是一个非常简单的示例,但在您的情况下应该可以实现您的目标。

vec1 <- which(grepl("set", iris$Species))

vec2 <- vec1+1
vec3 <- unique(c(vec1,vec2))

iris[vec3,]

编辑如果您在组内需要它,下面的解决方案应该有效。使用钻石数据集,我排序模仿您的顺序,然后按切割分组并查找颜色包含“E”的位置,然后您可以在第一个标志变量上使用 lag 来获取其后面的行,并且它尊重 group_by()

diamonds2 <- diamonds %>% 
             arrange(cut) %>% 
             group_by(cut) %>%
            mutate(
                   fl = ifelse(rownm %in% which(grepl("E",color)),1,0 ),
                   fl2 = lag(fl)) %>% 
            filter(fl ==1 | fl2 ==1
                    )

关于r - 在特定列中与 grep 匹配的模式后过滤行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67520016/

相关文章:

R求和数据透视表

r - 如何选择非唯一的列组合?

r - x轴为日期(即时间序列数据)时使用abline()

go - 如何在查询路由器中使用多个参数

r - 在每一行数据帧上使用 dplyr 循环

r - 使用 dplyr::group_by 根据分组变量的值运行一组函数

r - 如何对 R 中管道序列中的列选择应用函数?

r - 正则表达式中的负向前瞻以排除 R 中的百分比 (%)

filter - 使用Google Apps脚本启用范围内的数据过滤器

angularjs - 将过滤器文本字段的字符限制为 10 - ngTable