【问题标题】:Replace many strings by their counterparts according to a mapping根据映射将许多字符串替换为对应的字符串
【发布时间】:2013-06-14 14:26:52
【问题描述】:

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

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

如何根据mappingcountries中出现的所有国家名称替换为相应的iso代码?

【问题讨论】:

  • 你可以使用factorlevels

标签: r


【解决方案1】:

这是一种方式:

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

as.character 包装成字符向量的结果。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 谢谢!我接受了这个答案,因为它帮助我意识到我应该为这个变量使用因子。不过,@Matthews 的回答也同样有效。
    猜你喜欢
    • 2021-09-23
    • 2017-06-03
    • 2012-04-30
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多