首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从字符串中提取数字,包括数字之前的所有文本

如何从字符串中提取数字,包括数字之前的所有文本
EN

Stack Overflow用户
提问于 2019-02-19 17:48:26
回答 1查看 95关注 0票数 2

我有一份地址清单,其中包括(1)门牌和(2)建筑物名称。我希望将字符串分成两列。棘手的部分是一些门牌包含字符,例如"221B贝克街“。

示例如下:

代码语言:javascript
复制
add <- c("5 Ark Royal House" , 
     "22A Blington Garden Lincoln Street", 
     "Flat 19 PICTON HOUSE" , 
     "2-3 Royal Albert Court" , 
     "Room 1 Grand Hall", 
     "No 17 The Dell Alpha House")

理想的结果如下所示:

代码语言:javascript
复制
aim <- data.frame("No"=as.character(c("5", "22A", "Flat 19", "2-3", "Room 1", "No 17")), 
              "Building" = as.character(c("Ark Royal House", 
                                          "Blington Garden Lincoln Street" , 
                                          "PICTON HOUSE", 
                                          "Royal Albert Court" , 
                                          "Grand Hall" , 
                                          "The Dell Alpha House")))
EN

回答 1

Stack Overflow用户

发布于 2019-02-19 18:22:10

使用stringr

代码语言:javascript
复制
library(stringr)
lst <- str_match_all(add, "^(\\D*\\d[-\\w]*)\\s+(.+)")

(aim <- setNames(as.data.frame(do.call(rbind, lst)),
                c("all", "No", "Building")))

或者在香草R中:

代码语言:javascript
复制
pattern <- "^(\\D*\\d[-\\w]*)\\s+(.+)"
lst <- regmatches(add, regexec(pattern, add, perl = T))
(aim <- setNames(as.data.frame(do.call(rbind, lst)),
                 c("all", "No", "Building")))

两者都会让步

代码语言:javascript
复制
                                 all      No                       Building
1                  5 Ark Royal House       5                Ark Royal House
2 22A Blington Garden Lincoln Street     22A Blington Garden Lincoln Street
3               Flat 19 PICTON HOUSE Flat 19                   PICTON HOUSE
4             2-3 Royal Albert Court     2-3             Royal Albert Court
5                  Room 1 Grand Hall  Room 1                     Grand Hall
6         No 17 The Dell Alpha House   No 17           The Dell Alpha House

请参阅a demo for the expressionregex101.com上的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54763216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档