使用dplyr过滤包含特定string的行
我必须使用包含stringRTB
行作为标准来过滤dataframe。 我正在使用dplyr
。
d.del <- df %.% group_by(TrackingPixel) %.% summarise(MonthDelivery = as.integer(sum(Revenue))) %.% arrange(desc(MonthDelivery))
我知道我可以在dplyr
使用函数filter
,但我不知道如何告诉它检查string的内容。
特别是我想检查TrackingPixel
列中的内容。 如果string包含标签RTB
我想从结果中删除该行。
这个问题的答案已经在上面的评论中被@latemail发布了。 你可以像这样使用正则expression式来处理第二个和后续的filter
参数:
dplyr::filter(df, !grepl("RTB",TrackingPixel))
由于您没有提供原始数据,我将使用mtcars
数据集添加一个玩具示例。 想象一下,你只对马自达或丰田生产的汽车感兴趣。
mtcars$type <- rownames(mtcars) dplyr::filter(mtcars, grepl('Toyota|Mazda', type)) mpg cyl disp hp drat wt qsec vs am gear carb type 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag 3 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla 4 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 Toyota Corona
如果你想这样做,即不包括丰田和马自达汽车, filter
命令如下所示:
dplyr::filter(mtcars, !grepl('Toyota|Mazda', type))
我们应该使用比stringr::str_detect()
更多的base::grepl()
。 有关stringr
包的详细信息,请参阅stringr介绍 。
library(tidyverse) library(stringr) mtcars$type <- rownames(mtcars) mtcars %>% filter(str_detect(type, 'Toyota|Mazda')) # mpg cyl disp hp drat wt qsec vs am gear carb type # 1 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 # 2 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 Wag # 3 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1 Toyota Corolla # 4 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1 Toyota Corona