将混合字母数字/数字数据从 Excel 导入 R 时避免浮点错误

问题描述 投票:0回答:1

我有一个 Excel 文件,其中有一列可变长度的字母数字代码 - 请参阅问题末尾的示例。我一直在尝试使用

readxl
库将其读入 R:

read_xlsx("File.xlsx")

这适用于超过 90% 的数据,但对于极少数数据点,我会遇到浮点错误,例如

2.2000000000000002
8.1999999999999993

这只发生在“数字点数”格式的代码中,即不适用于独立数字(

2
8
)或包含字母的代码(
2.4.a
5.2.b.i
)。

我在 Excel 中选择了整个列并将格式设置为

Text
,但情况没有改善。我也尝试过使用不同的R库来读取数据:
openxlsx
read.xlsx
函数,但出现了同样的错误。这表明错误在于 Excel 保存文件的方式(将十进制代码视为数字,即使我已将整列设置为文本),而不是 R 的错误。R 成功地将列读取为字符 (
<chr> 
)。

样本数据

在原始 .xlsx 文件中 由 R 读入为
1 1
1.1 1.1000000000000001
1.2 1.2
1.3 1.3
2 2
2.1 2.1
2.2 2.2.2000000000000002
2.3 2.2999999999999998
2.4 2.4
2.5 2.5
3 3
3.1 3.1
3.1.a 3.1.a
3.1.b 3.1.b
3.1.c 3.1.c
3.1.d 3.1.d
3.2 3.2
3.3 3.3
3.3.a 3.3.a
3.3.b 3.3.b
3.4 3.4
4 4
4.1 4.0999999999999996
4.1.a 4.1.a
4.1.b 4.1.b
r excel floating-point
1个回答
0
投票

这种样式“1.1”是有问题的,因为它可以被数字或日期接受。可以通过在字符串开头放置撇号来解决:“'1.1”。这会强制 Excel 将输入的文本视为文本。这可能可以解决问题。否则,在字符串的开头放置任意字母:“R1.1”。考虑到它的含义,它不应该影响任何东西,但代码不会被解析为数字。

© www.soinside.com 2019 - 2024. All rights reserved.