r语言 - 将缩写替换为 in 地址



这可能是一个常见的用例,我在python中这样做,但在这种情况下,我必须在R中执行此操作。如何更换 rd 到道路、st 到 街道等。在R.

假设我有这样的映射字典,

dict = { st : street, rd : road, Ln : Lane, Pl : Place}

在我的df中,

Address
2/20,Queen St,London,UK
1,King Ln,Paris,France
5,Stuart Pl,Paris,France

我怎么得到这个,

Address
2/20,Queen Street,London,UK
1,King Lane,Paris,France
5,Stuart Place,Paris,France

谢谢。

您可以使用函数gsubgsub("Ln", "Lane", addresses)其中adresses是一个向量,您的地址作为字符串,将"Ln"的所有出现替换为"Lane"。你可以用正则表达式来使用它,但我认为这对你没有真正的帮助。

因此,您所要做的就是为您想要进行的所有替换调用该函数,然后您就完成了。R 没有字典(据我所知(,因此一次性完成所有操作需要另一种格式来存储映射。

要回答您关于如何为多个词典条目执行此操作的问题:

由于我们在 R 中没有字典,因此我们采用下一个最好的东西:列表。列表条目有一个名称和一个对象(值,向量,任何内容(。我们可以将条目的名称作为字典键,并将值转换为字典键:

dict <- list(St = "Street",
Rd = "Road",
Ln = "Lane",
Pl = "Place")

以您示例中的地址为例:

Adresses <- c("2/20,Queen St,London,UK",
"1,King Ln,Paris,France",
"5,Stuart Pl,Paris,France")

现在我们可以遍历列表的条目,创建表达式(使用 @wibeasley 提到的b标签(,并将其替换为列表中的条目。每次我们用结果覆盖 Adresses 向量时,我们都会按顺序应用所有过滤器。

for(i in 1:length(dict)){
Adresses <- gsub(paste0("\b", names(dict)[i], "\b"), dict[[i]], Adresses)
}

最新更新