Решение baseR с использованием regmatches, gregexpr
данных:
df1 <-
structure(list(BreweryName = c("(512) Brewing Company", "0 Mile Brewing Company",
"10 Barrel Brewing", "10 Barrel Brewing - Eastside Pub", "10 Barrel Brewing - Portland Pub",
"10 Barrel Brewing Co."), BreweryAddress = c("407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545",
"11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133",
"1501 E StSan Diego, California, 92101United States", "62950 NE 18th StBend, Oregon, 97701United States(541) 241-7733",
"1411 NW Flanders StPortland, Oregon, 97209-2620United States(541) 585-1007",
"830 W Bannock StBoise, Idaho, 83702-5857United States(208) 344-5870"
)), row.names = c(4L, 6L, 8L, 10L, 12L, 14L), class = "data.frame")
v <- c("Texas","Pennsylvania","Oregon","Oregon","Idaho")
код:
v_mod <- paste0(v, collapse="|")
df1$states <- sapply(regmatches(df1$BreweryAddress, gregexpr(v_mod, df1$BreweryAddress)), function(x){if(length(x)==0) NA else x})
результат:
# BreweryName BreweryAddress states
#4 (512) Brewing Company 407 Radam LnSte F200Austin, Texas, 78745-1197United States(512) 921-1545 Texas
#6 0 Mile Brewing Company 11 W 2nd StHummelstown, Pennsylvania, 17036-1506United States(717) 319-0133 Pennsylvania
#8 10 Barrel Brewing 1501 E StSan Diego, California, 92101United States <NA>
#10 10 Barrel Brewing - Eastside Pub 62950 NE 18th StBend, Oregon, 97701United States(541) 241-7733 Oregon
#12 10 Barrel Brewing - Portland Pub 1411 NW Flanders StPortland, Oregon, 97209-2620United States(541) 585-1007 Oregon
#14 10 Barrel Brewing Co. 830 W Bannock StBoise, Idaho, 83702-5857United States(208) 344-5870 Idaho