RODBC是R中用于将数据从数据库导入R的主库。RODBC
似乎能够“猜测”列的数据类型,我觉得它特别烦人。
我上传了一个文件test.xls
here,或者您可以自己创建一个xls文件:
col_a
,第二列名为col_b
。col_a
中键入您喜欢的任何内容,我在此列中键入了92行'
)library(RODBC)
setwd("C:/Users/hke775/Documents/Enoch/MISC/R_problems/RODBC")
channel <- odbcConnectExcel("test.xls",readOnly=TRUE)
dummy.df <- sqlFetch(channel,"Sheet1")
odbcClose(channel)
您会在dummy.df
中看到col_b
全部为NA
,此列中的1923
已消失。
如果您想再次看到1923
,可以将col_b
的第一行更改为一个数字,然后又返回。
这非常烦人,因为我不喜欢手动修改数据。我需要使用其他包来进行xls导入,但是我发现其他包不像RODBC
那样顺畅(我试过gdata
和xlsReadWrite
)。
我在sqlFetch
命令中遗漏了什么,造成了麻烦吗?感谢。
答案 0 :(得分:8)
请不要责怪R或RODBC Microsoft's bugs ...;)
但是,由于ODBC驱动程序中的错误,请指定要扫描的行 (MaxScanRows)设置目前无效。换句话说, Excel ODBC驱动程序(MDAC 2.1和更高版本)始终扫描前8行 在指定的数据源中,以确定每个列的 数据类型。
有关“扫描行”错误的其他信息,包括a 简单的解决方法,单击下面的文章编号查看该文章 在Microsoft知识库中:
189897 XL97:数据 使用Excel ODBC驱动程序截断为255个字符
我通过将TypeGuessRows
值设置为0来尝试KB189897中的修复,看看会发生什么!
> library(RODBC)
> channel <- odbcConnectExcel("test.xls",readOnly=TRUE)
> tail(dummy.df <- sqlFetch(channel,"Sheet1"))
col_a col_b
87 c NA
88 d NA
89 e NA
90 f NA
91 g NA
92 h 1923
> odbcClose(channel)
请不要上票或复选标记......只需发送现金。 :)