我正在尝试将数据从状态教育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和整数。
我应该使用其他数据类型吗?有没有办法恢复原始的整数或从一开始就导入它们?
非常感谢你的帮助!
答案 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() - 原因是我怀疑你永远不会对这些数字做算术,所以它们本质上是字符串。