任何人都可以提出一些建议,将带有位置名称的邮政编码分隔为“邮政编码”和“位置”,我的数据如下:
my.data <- c("105 69 STOCKHOLM", "FI-40101 JYVÄSKYLÄ", "SE-831 88 ÖSTERSUND",
"85170 Le Poiré Sur Vie", "Chaoyang Distr.. CN-100027 BEIJING")
基本上,没有清楚的模式如何将第一个数字或数字之类的字符串与城市名称分开。
希望结果为
Postcode City
105 69 STOCKHOLM
FI-40101 JYVÄSKYLÄ
SE-831 88 ÖSTERSUND
85170 Le Poiré Sur Vie
Chaoyang Distr.. CN-100027 BEIJING
或者如果您认为不可能,请给我评论
答案 0 :(得分:1)
这会做到
data.frame(postalCode = gsub('(.*\\d)\\D+$','\\1', my.data, perl = TRUE),
city = gsub('.*\\d(\\D+)$','\\1', my.data, perl = TRUE),
stringsAsFactors = FALSE)
# postalCode city
# 1 105 69 STOCKHOLM
# 2 FI-40101 JYVÄSKYLÄ
# 3 SE-831 88 ÖSTERSUND
# 4 85170 Le Poiré Sur Vie
# 5 Chaoyang Distr.. CN-100027 BEIJING
说明
正则表达式.*\\d\\D+$
的意思是:
.*
字符串开始任何事情/直到\\d\\D+$
的最后一位是数字,之后的所有数字都不是数字postalCode
中,我们捕获了从开始到最后一位数字(包括在内)的所有内容city
中,我们捕获了从最后一位(不包括)到最后一位的所有内容注意
在更一般的情况下,您可能不应该过多依赖它
# you can test and see what it yields with
my.data <- c(my.data,'postal 123 streetname 45 city', '831 88-SE Östersund')
答案 1 :(得分:0)
每个邮政编码都以数字结尾,这样就足够了:
membership rows