1

我正在尝试将数据从州教育 Access 数据库加载到 R 中的数据框中。该数据库提供有关该州学校的信息,每所学校都有一个 12 位数的识别号。当我用

demo.factors <- sqlQuery(connection, "SELECT * FROM 'Demographic Factors' WHERE YEAR = 2010")

它将这个数字转换为似乎是科学记数法(我很抱歉没有很好地掌握这里的内部工作原理)。当我尝试将它们转换回整数时,它们在数据库中使用

demo.factors$ENTITY_CD <- as.integer(demo.factors$ENTITY_CD)

我得到一堆与原始不匹配的 NA 和整数。

我应该使用另一种数据类型吗?有没有办法恢复原始整数或从一开始就导入它们?

非常感谢你的帮助!

4

1 回答 1

1

您的问题是整数值只能处理最多 2*10^9 的数字(即 ~9 位长)。您的学校 ID 号码是 12 位数字,因此应该是班级数字或双精度数。

但这一切都无关紧要,因为 R 将正确处理该数字。

在我看来,您对这个数字的显示有疑问。你有很多选择。这里有几个:

将数字显示为字符串:

x=999999999999
as.character(x)
[1] "999999999999"

使用任何字符串格式化函数来指定格式。这仍会将值转换为显示为字符,但为您提供格式的灵活性。例如,使用格式:

format(x, scientific=FALSE, width=12)
[1] " 999999999999"

执行类似格式化的其他函数包括 sprintf、prettyNum 和 formatC。

简而言之,不要尝试进行类型转换。当您想要显示结果时,只需使用这些功能之一。如果您真的想做类型转换,那么我建议您将数字转换为 as.character() - 原因是我怀疑您永远不会对这些数字进行算术运算,因此它们本质上是字符串。

于 2011-03-28T18:26:08.030 回答