【发布时间】:2020-07-19 21:31:42
【问题描述】:
我有一个 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 并使用 File->Import Dataset 函数将其导入 R
但是,这些都没有解决问题:值似乎总是以科学计数法出现。有人知道如何确保 Excel 或 R 不会将大数转换为科学记数法吗?
【问题讨论】:
-
您确定丢失了信息吗?当你使用
print(..., digits = 15)会发生什么 -
你是对的,信息没有丢失,只是显示方式不同。但是,我仍然希望能够将信息显示为一个整数。
-
使用
options(digits = 15) -
感谢您的 cmets。但我应该澄清自己:我看到使用这个选项,可以以非科学的方式在 R 控制台中显示值。但是,当我使用例如
View(TestData)时,我仍然看到科学记数法。有没有办法克服这个问题,它会让我更方便 -
你能提供一个可重现的例子,它不起作用。这对我来说可以产生所有数字:
options(digits = 15); DF <- data.frame(x = 6345157890027); View(DF)
标签: r excel csv export-to-csv