You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:15:36