Фильтрация строки, содержащей определенную строку с использованием dplyr

Мне нужно отфильтровать фрейм данных, используя в качестве критерия те строки, в которых содержится строка RTB. Я использую dplyr.

d.del <- df %.%
  group_by(TrackingPixel) %.%
  summarise(MonthDelivery = as.integer(sum(Revenue))) %.%
  arrange(desc(MonthDelivery))

Я знаю, что могу использовать функцию filter в dplyr, но я не знаю, как сказать ей, чтобы проверить содержимое строки.

В частности, я хочу проверить содержимое в столбце TrackingPixel. Если строка содержит метку RTB, я хочу удалить строку из результата.

Ответ 1

Ответ на вопрос уже был отправлен @latemail в комментариях выше. Вы можете использовать регулярные выражения для второго и последующих аргументов filter следующим образом:

dplyr::filter(df, !grepl("RTB",TrackingPixel))

Поскольку вы не предоставили исходные данные, я добавлю пример игрушки, используя набор данных mtcars. Представьте, что вас интересуют только автомобили, выпускаемые Mazda или Toyota.

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

Если вы хотите сделать это наоборот, а именно без автомобилей Toyota и Mazda, команда filter выглядит так:

dplyr::filter(mtcars, !grepl('Toyota|Mazda', type))

Ответ 2

Мы должны использовать скорее 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