如何解决RStudio使用read_xlsb读取Excel大数字显示为指数格式问题
read_xlsb读取大数值薪资列显示科学计数的解决方法
首先明确:该现象本质是R控制台/数据框的默认显示规则导致,read_xlsb本身没有修改原始数值,数值实际存储精度不受影响,仅显示为科学计数格式,可通过以下几种方法解决:
- 方法1:修改全局显示规则(当前R会话生效)
运行以下代码调高科学计数法触发阈值,设置后本次会话内所有数值输出都会优先使用普通计数格式:
如需恢复默认规则,运行options(scipen = 999)options(scipen = 0)即可。 - 方法2:单独处理薪资列的显示
如果不想修改全局配置,仅需要薪资列正常显示,可在需要展示时使用format()函数关闭科学计数:# 仅单次展示时使用 format(df$Salary, scientific = FALSE) # 如需让数据框每次查看都默认显示为普通格式,可将列转为字符型(注:后续需数值计算时要先转回numeric类型) df$Salary <- as.character(format(df$Salary, scientific = FALSE)) - 方法3:读取时直接指定列为文本类型
若不需要对薪资列做数值计算,可在调用read_xlsb时直接指定该列的类型为文本,读入后直接为完整的原始数值字符串,不会触发科学计数:# 请自行替换文件路径,列名需和Excel中的列名保持一致 df <- read_xlsb("你的文件路径.xlsb", col_types = c(Salary = "text"))
如果你使用的是tidyverse的tibble格式数据框,额外可以调整tibble的打印有效数字规则:
options(pillar.sigfig = 12) # 数值按12位有效数字显示,可根据你的薪资数值长度调整
内容的提问来源于stack exchange,提问作者Duffer
相关产品推荐
相关产品推荐

