提取逗号分隔的字符串

提取逗号分隔的字符串

我有如下数据框。这是一个具有统一外观模式的样本集数据,但整个数据不是很统一:

locationid      address
1073744023  525 East 68th Street, New York, NY      10065, USA
1073744022  270 Park Avenue, New York, NY 10017, USA
1073744025  Rockefeller Center, 50 Rockefeller Plaza, New York, NY 10020, USA
1073744024  1251 Avenue of the Americas, New York, NY 10020, USA
1073744021  1301 Avenue of the Americas, New York, NY 10019, USA
1073744026  44 West 45th Street, New York, NY 10036, USA

我需要从这个地址找到城市和国家的名字。我尝试了以下方法:

1) strsplit
这给了我一个列表,但我无法从中访问最后一个或倒数第三个元素。

2) 正则表达式
找国家很容易
str_sub(str_extract(address, "\\d{5},\\s.*"),8,11)

但对于城市
str_sub(str_extract(address, ",\\s.+,\\s.+\\d{5}"),3,comma_pos)

我找不到 comma_pos 因为它再次导致我遇到同样的问题。
我相信有一种更有效的方法可以使用上述任何一种方法来解决这个问题。

最佳答案

拆分数据

 ss <- strsplit(data,",")`

然后
n <- sapply(s,len)

将给出元素的数量(所以你可以向后工作)。然后
mapply(ss,"[[",n)

给你最后一个元素。或者你可以做
sapply(ss,tail,1)

获取最后一个元素。

要获得倒数第二(或更普遍),您需要
sapply(ss,function(x) tail(x,2)[1])

关于regex - 提取逗号分隔的字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27172007/

10-11 00:49