R读取Excel之后数据有变

如84.3读取后变成了84.299999999999997
但有些数据就保持原来的数

可以在读取数据时设置参数来规避这个问题。在R中使用读取Excel的函数时,可以在参数中加上字符串 "options = list("stringsAsFactors" = F)",这样就可以避免将含有数字的字符型数据转化为因子变量,同时也可以避免Excel文件读取后会变动精度的问题。

library(xlsx)

# 读取数据时规避数值精度和字符变量问题
my_data <- read.xlsx("mydata.xlsx", sheetIndex = 1, header = T, 
                     stringsAsFactors = F, options = list("stringsAsFactors" = F))

stringsAsFactors = F的设置可以避免将含有数字的字符型数据转化为因子变量,options = list("stringsAsFactors" = F)的设置可以使R读取Excel后不改变数据的小数精度

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
这是因为在Excel中存储的数值使用的是二进制表示,在转换成浮点数时可能会出现精度误差。

在R中,可以使用函数round()format()来控制输出的小数位数。例如,要将84.299999999999997这个数保留两位小数并输出,可以这样做:

x <- 84.299999999999997
round(x, 2)

这将输出84.3。如果要输出字符串形式的结果,可以使用format()函数:

format(x, nsmall = 2)

这将输出"84.30"。

如果希望在读取Excel文件时避免精度误差,可以尝试使用R中的一些扩展包,例如readxlopenxlsx等,这些包提供了更为准确的读取Excel文件的方法。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢