在R中连接列名不匹配的表:如何用分类名称替代ID绘图?
解决方法
你的问题核心是表连接的关联列匹配错误:main_table中存储外键的列是category,category_table的主键是id,但你用by="id"连接时,两表并没有正确匹配(main_table里不存在id列),导致后续绘图仍调用原ID列而非name列。
步骤1:正确执行表连接
使用inner_join时,需明确指定两表的关联列对应关系,格式为by = c("主键列" = "外键列"):
# 正确关联:category_table的id对应main_table的category join_table <- inner_join(category_table, main_table, by = c("id" = "category"))
步骤2:绘图时调用name列
连接完成后,绘图要确保使用join_table中的name列,而非原category或id列。以ggplot2绘图为例:
library(ggplot2) ggplot(join_table, aes(x = name, y = 你的数值列)) + geom_bar(stat = "identity")
备选方案:直接给原表添加name列
如果不想重新连接,也可以直接给main_table匹配添加name列:
main_table$category_name <- category_table$name[match(main_table$category, category_table$id)]
之后绘图调用category_name列即可。
内容的提问来源于stack exchange,提问作者siekertr21
相关产品推荐
相关产品推荐

