Фильтровать набор данных с% в% с шаблоном - PullRequest
0 голосов
/ 05 февраля 2020

Я использую фильтр для своего набора данных, чтобы выбрать определенные значения из столбца:


%>%
filter(col1 %in% c(“value1”, “value2"))

Как бы то ни было, я не понимаю, как фильтровать значения в столбце с шаблоном, не записав его полностью. Например, я также хочу, чтобы все значения начинались с «value3» («value33», «value34», ....) вместе с «value1» и «value2». Могу ли я добавить grepl к этому вектору?

Ответы [ 3 ]

3 голосов
/ 05 февраля 2020

Для этого можно использовать регулярные выражения:

df %>%
   filter(str_detect('^value[1-3]'))
2 голосов
/ 05 февраля 2020

Если вы хотите использовать другой пакет tidyverse, вы можете использовать str_starts из stringr, чтобы найти строки, начинающиеся с определенного значения

dd %>% filter(stringr::str_starts(col1, "value"))
0 голосов
/ 05 февраля 2020

Вот несколько опций в базе R:

Использование grepl:

subset(df, grepl('^value', b))

#  a        b
#1 1   value3
#3 3 value123
#4 4  value12

Аналогичная опция с grep, которая возвращает индекс совпадения.

df[grep('^value', df$b),]

Однако более быстрым вариантом будет использование startsWith

subset(df, startsWith(b, "value"))

Все это позволит выбрать строки, в которых столбец b начинается с "value".

данные

df <- data.frame(a = 1:5, b = c('value3', 'abcd', 'value123', 'value12', 'def'), 
                 stringsAsFactors = FALSE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...