将带有大量数字的 .csv 导入 R 而无需科学记数法
Import a .csv with large numbers into R without scientific notation
我有一个 Microsoft Excel (.xlsx) 文件,我想将其加载到 R 中。我之前已经这样做过并使用了 read.csv()
,它总是工作正常,但是有了这个文件发生了一些奇怪的事情。一列似乎出了点问题,它包含行名称和值为 13 位的大数字。此专栏是 - 无论我如何尝试将文件加载到 R - 转换为其科学记数法。
问题可以模拟如下:在Excel中,先输入第一列
行,一个随机的行名。在第一列第二行中键入一个随机的大数字,例如6345157890027。然后将文件另存为.csv。假设我想在 R 中打开这个文件:
TestData <- read.csv(file = "Test.csv", head = TRUE)
然后
View(TestData)
号码6345157890027现在显示为6.345158e+12,导入时某处丢失信息。现在,我尝试通过多种方式解决这个问题:
- 在 .xlsx 和 .csv 文件中,我都转换了行
转换为数字格式
- 尝试了所有 Excel 允许我保存的 .csv 格式
- 已将整个工作表复制到新的 Excel 文件
- 在Excel
中使用了导入数据功能
- 将工作表另存为 .txt 并使用“文件”->“导入数据集”功能将其导入到 R 中
然而,其中 none 解决了问题:该值似乎总是以科学记数法出现。有人知道确保 Excel 或 R 不会将大数转换为科学记数法的方法吗?
您可以使用 bit64
包中的 as.bit64
函数。只需确保不要使用 64 位数字来引用其他 R 对象。此解决方案适用于 +-2^63
范围内的数字。
我使用 format
函数解决了这个问题,正如 rnso (see How to prevent scientific notation in R? 在另一个 post 中提出的那样:
> xx = 100000000000
> xx
[1] 1e+11
> format(xx, scientific=F)
[1] "100000000000"
对于我在数据框中错误显示的列也非常有效
可以只声明 options(scipen = 999)
并确保环境不会将大数更改为指数形式。
我有一个 Microsoft Excel (.xlsx) 文件,我想将其加载到 R 中。我之前已经这样做过并使用了 read.csv()
,它总是工作正常,但是有了这个文件发生了一些奇怪的事情。一列似乎出了点问题,它包含行名称和值为 13 位的大数字。此专栏是 - 无论我如何尝试将文件加载到 R - 转换为其科学记数法。
问题可以模拟如下:在Excel中,先输入第一列
行,一个随机的行名。在第一列第二行中键入一个随机的大数字,例如6345157890027。然后将文件另存为.csv。假设我想在 R 中打开这个文件:
TestData <- read.csv(file = "Test.csv", head = TRUE)
然后
View(TestData)
号码6345157890027现在显示为6.345158e+12,导入时某处丢失信息。现在,我尝试通过多种方式解决这个问题:
- 在 .xlsx 和 .csv 文件中,我都转换了行 转换为数字格式
- 尝试了所有 Excel 允许我保存的 .csv 格式
- 已将整个工作表复制到新的 Excel 文件
- 在Excel 中使用了导入数据功能
- 将工作表另存为 .txt 并使用“文件”->“导入数据集”功能将其导入到 R 中
然而,其中 none 解决了问题:该值似乎总是以科学记数法出现。有人知道确保 Excel 或 R 不会将大数转换为科学记数法的方法吗?
您可以使用 bit64
包中的 as.bit64
函数。只需确保不要使用 64 位数字来引用其他 R 对象。此解决方案适用于 +-2^63
范围内的数字。
我使用 format
函数解决了这个问题,正如 rnso (see How to prevent scientific notation in R? 在另一个 post 中提出的那样:
> xx = 100000000000
> xx
[1] 1e+11
> format(xx, scientific=F)
[1] "100000000000"
对于我在数据框中错误显示的列也非常有效
可以只声明 options(scipen = 999)
并确保环境不会将大数更改为指数形式。