Нахождение значения в R, которое содержит определенную строку - PullRequest
0 голосов
/ 23 февраля 2019

Есть ли способ в R найти значения в столбце, который содержит слово?Например, я хочу найти все значения, которые содержат слово «the», где некоторые значения столбца - «the_cat» и «the_dog» и «dog»

x <- c("the_dog", "the_cat", "dog")

Используя приведенный выше пример,ответ будет 2. Я знаю, что это довольно легко сделать в Python, но мне интересно, есть ли способ сделать это в R. Спасибо!

Ответы [ 4 ]

0 голосов
/ 23 февраля 2019

Попробуйте также:

x <- c("the_dog", "the_cat", "dog")
sum(stringi::stri_count(x,regex="^the"))#matches the at the beginning

Результат:

[1] 2

Или:

   x <- c("the_dog", "the_cat", "dog")
  sum(stringi::stri_count(x,regex="the{1,}"))#matches any the
0 голосов
/ 23 февраля 2019
x <- c("the_dog", "the_cat", "dog") 
stringr::str_detect(x, "the")
#> [1]  TRUE  TRUE FALSE

Создано в 2019-02-23 пакетом представ (v0.2.1)

0 голосов
/ 23 февраля 2019

Попробуйте:

sum(grepl("(?<![A-Za-z])the(?![A-Za-z])", x, perl = T))

Это дает сумму 2 на вашем примере.

Но давайте рассмотрим также несколько более сложный пример:

x <- c("the_dog", "the_cat", "dog", "theano", "menthe", " the")

Вывод:

[1] 3

Выше мы пытаемся сопоставить любой the, который не 'не иметь другой буквы до или после (например, theano).

Вы также можете добавить в [] другие вещи, которые вы не хотели бы сопоставлять, например, если бы вы не считали the99 словом the, вы бы сделали [A-Za-z0-9] и т. Д.

Вы также можете использовать вышеприведенное с stringr, например (я включил исключение чисел, поэтому ниже the99 не будет считаться словом):

library(stringr)

sum(str_detect(x, "(?<![A-Za-z0-9])the(?![A-Za-z0-9])"))
0 голосов
/ 23 февраля 2019
library(stringr)
##with a vector
sum(str_detect(c("the_dog", "the_cat", "dog"),"the"))

##In a dataframe

tibble(x = c("the_dog", "the_cat", "dog")) %>%
    filter(str_detect(x, "the")) %>%
    nrow()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...