Фильтр по частичному совпадению строковой переменной в R - PullRequest
1 голос
/ 20 января 2020

У меня есть фрейм данных со строковой переменной столбца «болезнь». Я хочу отфильтровать строки с частичным совпадением "травма" или "травма". В настоящее время я сделал следующее, используя dplyr и stringr:

trauma_set <- df %>% filter(str_detect(disease, "trauma|Trauma"))

Но результат также включает в себя "Nontraumati c" и "nontraumati c". Как я могу отфильтровать только «травма, травма, травма c или травма c» без учета не травмы или нетравмы? Кроме того, есть ли способ, которым я могу определить строку для обнаружения без указания прописной и строчной версии строки (как в травме и травме)?

1 Ответ

1 голос
/ 20 января 2020

Если мы хотим указать границу слова, используйте \\b в начале. Кроме того, для различных случаев мы можем использовать ignore_case = TRUE, обернув modifiers

library(dplyr)
library(stringr)
out <- df %>%
        filter(str_detect(disease, regex("\\btrauma", ignore_case = TRUE)))

sum(str_detect(out$disease, regex("^Non", ignore_case = TRUE)))
#[1] 0

data

set.seed(24)
df <- data.frame(disease = sample(c("Nontraumatic", "Trauma", 
 "Traumatic", "nontraumatic", "traumatic", "trauma"), 50 ,
        replace = TRUE), value = rnorm (50))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...