我在数据框变量中有数百个地址,需要从中提取邮政编码。一些地址包含多个城市,每个城市都有一个邮政编码。这是一个提取邮政编码的数据框和 R 代码的模拟示例。
require(qdapRegex)
require(stringr)
df <- data.frame(address = c("Walnut; 94596, Ontario, 91761, Beach, CA 90071", "Irvine Cal 92164"), var2 = "text")
df$zip.Rinker <- sapply(df$address, FUN = rm_zip, extract=TRUE)
rm_zip
Tyler Rinker包中的函数qdapRegex
提取所有邮政编码,如果有多个邮政编码,则将它们放入列表中。
> df
address var2 zip.Rinker
1 Walnut; 94596, Ontario, 91761, Beach, CA 90071 text 94596, 91761, 90071
2 Irvine Cal 92164 text 92164
R如何为zip.Rinker下第1行中的每个邮政编码创建一个新行?像下面这样的东西是理想的。请注意,会有几十个地址有多个邮政编码,所以我希望有一个不需要手动步骤的解决方案。
address var2 zip.Rinker
1 Walnut; 94596, Ontario, 91761, Beach, CA 90071 text 94596
2 Walnut; 94596, Ontario, 91761, Beach, CA 90071 text 91761
3 Walnut; 94596, Ontario, 91761, Beach, CA 90071 text 90071
4 Irvine Cal 92164 text 92164
谢谢你的时间。
PS 使用stringr
,此代码提取邮政编码并提出相同的挑战。
df$zip.stringr <- str_extract_all(string = df$address, pattern = "\\d{5}")