选择R中两列的部分字符串匹配的行?

时间:2019-01-18 01:22:20

标签: r

我正在使用类似于以下内容的数据集:

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 :(得分:0)

我们可以使用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$即可获取列的值。