r - 使用 R 从字符串向量中搜索列
问题描述
我有带有地址的列。我想解析它并且只有州名。下面是我的专栏
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")
我确实尝试过使用match
,grep
但它返回了NA's
.
解决方案
这是使用的基本 R 选项grepl
:
v <- c("Texas","Pennsylvania","Oregon","Oregon","Idaho")
states <- paste0("\\b", v, "\\b", collapse="|")
states
[1] "\\bTexas\\b|\\bPennsylvania\\b|\\bOregon\\b|\\bOregon\\b|\\bIdaho\\b"
df[grepl(states, df$BreweryAddress), ]
我打印出来states
以便清楚我们使用什么正则表达式模式来搜索啤酒厂地址。我们使用每个州名的交替,包含在单词边界标记中。这确保我们不会意外匹配恰好包含某个状态名称作为子字符串的字符串。
推荐阅读
- asp.net-core - Azure StorageAccount 中的 Blazor webAssembly 代码
- excel - Excel 函数可将 X 天、x 小时、X 分钟转换为实际分钟数
- spss - 在 spss 的输出中没有得到拟合优度测试
- python - 解压到 Python 中的列表追加方法
- c++ - C++ 两个对象持有指向同一数组不同部分的指针
- bash - 未找到 Gitlab CI/CD Gradle Clean 构建文件
- javascript - 将嵌套的对象数组转换为对象
- java - 如果@BeforeEach 方法中抛出异常,@AfterEach 是否仍会运行
- python - 如何为热图或树图聚合项目?
- node.js - 使用 Nodemailer 时的“from”属性到底是什么?