根据映射替换对应的许多字符串

时间:2013-06-14 14:26:52

标签: r

我有一个字符串向量(例如国家/地区名称),以及这些字符串到其他字符串的映射(例如,国家/地区名称到ISO代码的映射)。

countries = c('United States', 'Ecuador', 'Russia', 'Russia', 'Ecuador')
mapping = data.frame(country = c('Ecuador', 'Russia', 'United States'),
                     iso3 = c('ECU', 'RUS', 'USA'))

如何根据countries用相应的ISO代码替换mapping中所有国家/地区名称的出现?

2 个答案:

答案 0 :(得分:8)

这是一种方式:

with(mapping, iso3[match(countries, country)])
# [1] USA ECU RUS RUS ECU
# Levels: ECU RUS USA

as.character中的此内容作为字符向量包装到结果中。

答案 1 :(得分:4)

或者,正如贾斯汀指出的那样:

factor(countries,levels = mapping$country,labels = mapping$iso3)
[1] USA ECU RUS RUS ECU
Levels: ECU RUS USA