使用R绘制CSV数据直方图时出现重复列,如何合并?
问题原因与解决方法
为什么会出现重复列?
看似相同的类别(比如“chat rooms”“tip”)被ggplot当成不同类别,核心原因是这些字符串存在隐藏差异:
- 前后有看不见的半角/全角空格
- 字符串中间有多余空格
- 大小写不一致(比如“Tip”和“tip”)
- 包含换行符或其他不可见控制字符
Excel里直接复制覆盖没法清除这些隐藏内容,所以读入R后还是会被识别为不同的x轴类别。
解决步骤
1. 先确认问题所在
在R里运行以下代码,查看platform列的所有唯一值及字符长度,快速定位差异:
# 查看所有唯一值 unique(data$platform) # 查看每个唯一值的字符长度 sapply(unique(data$platform), nchar)
2. 清理字符串
根据检查结果,用以下方法统一处理:
- 去除前后空格:
data$platform <- trimws(data$platform)
- 统一大小写(比如全部转小写):
data$platform <- tolower(data$platform)
- 去除中间多余空格(把多个空格合并为一个):
先安装stringr包(未安装时执行):
install.packages("stringr")
再运行清理代码:
library(stringr) data$platform <- str_squish(data$platform)
- 转换全角字符为半角(存在全角空格/字符时使用):
先安装stringi包(未安装时执行):
install.packages("stringi")
再运行转换代码:
library(stringi) data$platform <- stri_trans_general(data$platform, "Fullwidth-Halfwidth")
3. 重新绘图
完成字符串清理后,再次执行你原来的ggplot代码,重复的类别就会合并为同一列。
内容的提问来源于stack exchange,提问作者Sun S
相关产品推荐
相关产品推荐

