作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含意大利街道名称和地址的文件,我必须将地址列拆分为街道名称和街道编号。问题是地址有两个或三个字符串,然后数字或数字有时也有字符,例如 15/a其中一些的地址类似于 12-Maggio 23,我的拆分应该是第一列 12-maggio 和第二列 23。
文件格式如下
Street.adress
Falcone N. 1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9
输出应该在 2 个单独的列中
Falcone N. 1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9
我怎样才能做到这一点,我已经尝试了 excel 公式并且也未拆分但不起作用。我已经在 R 中尝试了以下代码,但它失败了,那么我该怎么做呢?
for (i in 1:nrow (df)) {
new_df [i,"Street.Name"] <- unlist(strsplit (df[["Street.Addresses"]], " ")[i])[1]
new_df [i,"Street.Number"] <- paste (unlist(strsplit (df[["Street.Addresses"]], " ")[i])[-1], collapse = " ")
}
尝试过
df <- gsub("$([0-9]+ +)?(.*)", "\\1\t\\2", df)
没有任何作用。任何线索
最佳答案
此正则表达式与 gsub()
和 strsplit()
相结合,适用于您提供的数据。
这里的技巧是我先在我想分割字符串的位置插入一个\t
,然后用strsplit()
和\t
作为分隔符。
x <- read.table(sep = "\n",
header = TRUE,
quote = "\"",
text = "Street.adress
Falcone N. 1
Fortunato Giustino 2
Pisacane 3
Fabrizio De Andre' 8
S. Satta 7
Agnesi 16
Volturno Cigni 80
Montepenice 6
Cucchiari 15
Molinetto Di Lorenteggio 15/T 7
Don Minzoni 15
Senigallia 4
Milano 38/A
L. Da Vinci 13/A
27-Novembre 9"
)
pattern <- "(.*?) +(\\d+.*)"
z <- gsub(pattern, "\\1\t\\2", x[[1]])
unlist(
strsplit(z, "\t")
)
结果:
[1] "Falcone N." "1"
[3] "Fortunato Giustino" "2"
[5] "Pisacane" "3"
[7] "Fabrizio De Andre'" "8"
[9] "S. Satta" "7"
[11] "Agnesi" "16"
[13] "Volturno Cigni" "80"
[15] "Montepenice" "6"
[17] "Cucchiari" "15"
[19] "Molinetto Di Lorenteggio" "15/T 7"
[21] "Don Minzoni" "15"
[23] "Senigallia" "4"
[25] "Milano" "38/A"
[27] "L. Da Vinci" "13/A"
[29] "27-Novembre" "9"
附言。编辑答案以处理输入数据中有引号 '
的事实。为了解决这个问题,您必须将 quote = "\""
设置为 read.table()
的参数,否则将跳过某些行。
关于regex - 如何在 unix 或 R 或 grep 或 awk 中以以下格式拆分街道地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30562957/
我是一名优秀的程序员,十分优秀!