我有一个数据集(名为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/