R语言中将Excel第二行设为列名却显示数字的问题求助
解决R中Excel列名显示为数字的问题
嘿,我懂你遇到的这个头疼问题——明明想把第二行设为列名,结果却变成了一堆数字,这大概率是因子类型在搞怪!
问题根源
当你直接用colnames(df) = df[2,]赋值时,df[2,]里的元素很可能是因子(factor)类型。R中的因子会用数字存储内部编码,直接赋值列名时,就会把这些编码数字显示出来,而不是你看到的实际文本内容。
快速修复方案
只需要把第二行转换成字符向量再赋值,就能拿到正确的列名了:
# 将第二行转为字符类型后设置为列名 colnames(df) <- as.character(df[2, ])
更规范的完整流程
为了避免后续数据混乱,记得把原来的前两行(没用的表头行)删掉,同时读取文件时可以指定stringsAsFactors = FALSE,防止默认把字符转成因子:
# 读取文件时禁用自动转因子 df <- read.xlsx('D:/hotel rates/Yoho 5th Lane Signature 2799850.xls', sheetIndex = 1, header = FALSE, stringsAsFactors = FALSE) # 设置第二行为列名 colnames(df) <- df[2, ] # 删除前两行(原表头行) df <- df[-c(1, 2), ]
小验证
你可以运行class(df[2,2])看看原来的类型,如果输出是factor,那转成字符就完全解决问题啦。
内容的提问来源于stack exchange,提问作者Jaliya
相关产品推荐
相关产品推荐

