从列表中给出的字符串中提取子字符串

时间:2018-11-28 16:50:02

标签: filter dplyr extract tidyverse stringr

我有两个小标题,一个带有一些长度不均匀的系列代码,另一个带有国家/地区代码

codes <- as.tibble(c("brcomec", "frcomopf", "decombwf", "ezcomop", 
       "jpcomop", "aewheob", "ezcompis", "decomipf"))
countries <- as.tibble(c("br", "fr", "advecos", "af", "africa", "al", "dz", "as", "ad", 
                     "ao", "ai", "aq", "ag"))

在给出国家/地区信息的情况下,如何从“代码”中提取国家/地区,即我希望拥有类似的信息

dta <- data.frame( 
~country , ~ rest , 
br       , comec  ,
fr       , comopf ,
...
) 

我尝试了filter(str_detect(code, paste(countries))),但没有成功,因此请多多帮助。

1 个答案:

答案 0 :(得分:0)

您想要这样的东西吗?

library(tidyverse)
codes1 <- substr(codes$value, start = 1, stop = 2)
codes2 <- substr(codes$value, start = 3, stop = 10)

codes3 = tibble(codes1, codes2)
codes3

哪个返回?

# A tibble: 8 x 2
  codes1 codes2
  <chr>  <chr> 
1 br     comec 
2 fr     comopf
3 de     combwf
4 ez     comop 
5 jp     comop 
6 ae     wheob 
7 ez     compis
8 de     comipf