从R中使用大整数的数据库加载表

时间:2011-03-28 17:21:40

标签: ms-access r types rodbc dataframe

我正在尝试将数据从状态教育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和整数。

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

非常感谢你的帮助!

1 个答案:

答案 0 :(得分: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() - 原因是我怀疑你永远不会对这些数字做算术,所以它们本质上是字符串。