Выберите строки с частичным совпадением строк из двух столбцов в R? - PullRequest
0 голосов
/ 18 января 2019

Я работаю с набором данных, подобным следующему:

data<- tibble('year' = c(1850,1860,1870), 'TallestPerson' = c('Abe Lincoln', 'Abe 
Lincoln', 'Paul Bunyon'), 'President'=c('Taylor', 'Lincoln', 'Grant'))

В форме таблицы:

    year  TallestPerson  President
1   1850  Abe Lincoln    Taylor
2   1860  Abe Lincoln    Lincoln
3   1870  Paul Bunyon    Grant

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

Я пытался

tall_presidents <- data %>% filter(data$President %in% data$TallestPerson)

Это возвращает пустой тиббл, потому что (я предполагаю) TallestPerson и President не совпадают точно. Как выбрать строки, в которых имя президента содержится в имени самого высокого человека?

Если бы это был SQL, оператор, который я ищу, был бы

SELECT *
FROM data
WHERE TallestPerson LIKE "%"+President+"%"

1 Ответ

0 голосов
/ 18 января 2019

Мы можем использовать str_detect

library(tidyverse)
data %>%
   filter(str_detect(TallestPerson, President))
# A tibble: 1 x 3
#    year TallestPerson President 
#  <dbl> <chr>         <chr>    
#1  1860 Abe Lincoln   Lincoln  

ПРИМЕЧАНИЕ. В функциях tidyverse нам не нужно указывать data$, чтобы получить значение столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...