基于对应行替换数据:将iso_o/iso_d的国家代码替换为对应国名
国家代码替换为名称的处理方案
原始数据
# A tibble: 10 × 4 code country iso_o iso_d <chr> <chr> <chr> <chr> 1 ABW Aruba ABW ABW 2 AFG Afghanistan ABW AFG 3 AGO Angola ABW AGO 4 AIA Anguilla ABW AIA 5 ALB Albania ABW ALB 6 AND Andorra ABW AND 7 ANT Netherland Antilles ABW ANT 8 ARE United Arab Emirates ABW ARE 9 ARG Argentina ABW ARG 10 ARM Armenia ABW ARM
需求说明
现有包含code、country、iso_o、iso_d四列的tibble数据:
code列存储国家代码,country列存储对应国家名称- 需要将
iso_o和iso_d列中所有与code列匹配的代码,替换为对应的country名称(例如所有ABW替换为Aruba)
数据结构
structure(list(code = c("ABW", "AFG", "AGO", "AIA", "ALB", "AND", "ANT", "ARE", "ARG", "ARM"), country = c("Aruba", "Afghanistan", "Angola", "Anguilla", "Albania", "Andorra", "Netherland Antilles", "United Arab Emirates", "Argentina", "Armenia"), iso_o = c("ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW", "ABW" ), iso_d = c("ABW", "AFG", "AGO", "AIA", "ALB", "AND", "ANT", "ARE", "ARG", "ARM")), row.names = c(NA, -10L), class = c("tbl_df", "tbl", "data.frame"))
处理代码
使用dplyr包可高效完成替换,步骤如下:
- 创建代码-国家名称的映射向量:
library(dplyr) # 假设你的数据框名为df code_to_country <- setNames(df$country, df$code)
- 批量替换
iso_o和iso_d列:
df_processed <- df %>% mutate(across(c(iso_o, iso_d), ~recode(., !!!code_to_country)))
处理后结果示例
处理后的tibble如下:
# A tibble: 10 × 4 code country iso_o iso_d <chr> <chr> <chr> <chr> 1 ABW Aruba Aruba Aruba 2 AFG Afghanistan Aruba Afghanistan 3 AGO Angola Aruba Angola 4 AIA Anguilla Aruba Anguilla 5 ALB Albania Aruba Albania 6 AND Andorra Aruba Andorra 7 ANT Netherland Antilles Aruba Netherland Antilles 8 ARE United Arab Emirates Aruba United Arab Emirates 9 ARG Argentina Aruba Argentina 10 ARM Armenia Aruba Armenia
内容的提问来源于stack exchange,提问作者stuckonthesis
相关产品推荐
相关产品推荐

