如何在R语言中将数值型zom$Country.Code替换为对应字符串值
嘿,这个需求很常见,我给你几种简单可靠的实现方法,你可以根据自己的习惯来选:
方法1:用命名向量做值匹配
这种方法最直观,先建立整数编码和国家名称的映射关系,再直接匹配替换:
# 第一步:创建映射用的命名向量,整数编码作为名字,对应国家名称作为值 country_map <- c( "1" = "India", "14" = "Australia", "30" = "Brazil", "37" = "Canada", "94" = "Indonesia", "148" = "NewZealand", "162" = "Phillipines", "166" = "Qatar", "184" = "Singapore", "189" = "southAfrica", "191" = "SriLanka", "208" = "Turkey", "214" = "UAE", "215" = "UnitedKingdom", "216" = "UnitedStates" ) # 第二步:替换原列的值,注意把整数转成字符来匹配命名向量的名字 zom$Country.Code <- country_map[as.character(zom$Country.Code)]
方法2:通过因子(Factor)转换
如果之后你还需要保留原整数编码的信息,这种方法很合适——它会把列转成因子类型,既显示国家名称,又能随时转回原编码:
# 将整数列转换为因子,指定原编码为levels,对应国家名称为labels zom$Country.Code <- factor( zom$Country.Code, levels = c(1,14,30,37,94,148,162,166,184,189,191,208,214,215,216), labels = c("India","Australia","Brazil","Canada","Indonesia","NewZealand","Phillipines","Qatar","Singapore","southAfrica","SriLanka","Turkey","UAE","UnitedKingdom","UnitedStates") ) # 如果之后想把因子转成普通的字符向量,执行下面这行即可: # zom$Country.Code <- as.character(zom$Country.Code)
方法3:用dplyr的recode函数(适合tidyverse用户)
如果你平时习惯用tidyverse系列的工具,用dplyr的recode函数会更符合你的工作流:
# 先加载dplyr包(如果没装的话先运行install.packages("dplyr")) library(dplyr) # 使用mutate和recode替换列值,注意整数参数要加反引号 zom <- zom %>% mutate(Country.Code = recode( Country.Code, `1` = "India", `14` = "Australia", `30` = "Brazil", `37` = "Canada", `94` = "Indonesia", `148` = "NewZealand", `162` = "Phillipines", `166` = "Qatar", `184` = "Singapore", `189` = "southAfrica", `191` = "SriLanka", `208` = "Turkey", `214` = "UAE", `215` = "UnitedKingdom", `216` = "UnitedStates" ))
内容的提问来源于stack exchange,提问作者vidhi amin
相关产品推荐
相关产品推荐

