使用rbind合并两列因子型城市名变量时显示数字而非名称求解决
解决R中rbind合并factor类型数据显示数字的问题
嘿,这个坑我之前踩过!你看到一堆数字的原因很明确:你合并的是factor类型的变量。在R里,factor本质是“带标签的整数向量”——每个城市名称对应一个底层的整数值(比如第一个城市对应1,第二个对应2),rbind会直接提取这些底层整数,而不是我们直观看到的城市名称标签。
下面给你几个实用的解决办法:
方法1:先转成字符型再合并(最直接)
先把factor转换成字符向量,再进行合并,这样就能保留城市名称了:
# 将factor转为字符向量 firstcitynames <- as.character(rcffull$X1CityName) secondcitynames <- as.character(rcffull$X2CityName) # 执行合并 allcitynames <- rbind(firstcitynames, secondcitynames)
如果之后你还需要把结果转回factor类型,可以加一步:
allcitynames <- as.factor(allcitynames)
方法2:用dplyr的bind_rows自动处理
如果你习惯用tidyverse工具包,dplyr::bind_rows会更智能地处理factor类型,它会自动保留标签而不是显示底层数字:
library(dplyr) # 把两个变量放到数据框中再合并 allcitynames <- bind_rows( tibble(city = firstcitynames), tibble(city = secondcitynames) )
这个方法的好处是,如果两个factor的水平(即包含的城市列表)一致,合并后会保留factor类型;如果水平不一致,也会自动转为字符型或者统一水平,不会出现数字。
额外小科普
如果你好奇那些数字是什么,其实就是每个城市在factor的levels()里的位置索引。比如你可以用levels(firstcitynames)查看所有城市的顺序,那些数字就是对应顺序的序号~
内容的提问来源于stack exchange,提问作者Naim
相关产品推荐
相关产品推荐

