Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel列包含前导NAs的RODBC读取错误_Excel_R_Rodbc - Fatal编程技术网

excel列包含前导NAs的RODBC读取错误

excel列包含前导NAs的RODBC读取错误,excel,r,rodbc,Excel,R,Rodbc,我一直在使用RODBC包将Excel工作表读入R,并且遇到了Excel ODBC驱动程序的问题。包含(足够)前导NAs的列被强制为逻辑列 在Excel中,数据显示如下: period n n.ft n.pt 1/02/1985 0.008 NA 0.025 1/03/1985 -0.003 NA -0.024 1/04/1985 0.002 NA 0.015 1/05/1985 0.006 NA 0.012 1/06/1985 0.

我一直在使用
RODBC
包将Excel工作表读入
R
,并且遇到了Excel ODBC驱动程序的问题。包含(足够)前导NAs的列被强制为逻辑列

在Excel中,数据显示如下:

period      n       n.ft n.pt
1/02/1985   0.008   NA  0.025
1/03/1985   -0.003  NA  -0.024
1/04/1985   0.002   NA  0.015
1/05/1985   0.006   NA  0.012
1/06/1985   0.001   NA  0.003
1/07/1985   0.005   NA  0.010
1/08/1985   0.006   NA  0.001
1/09/1985   0.007   NA  0.013
1/10/1985   -0.002  NA  0.009
1/11/1985   0.013   NA  0.019
1/12/1985   -0.004  NA  -0.021
1/01/1986   0.008   NA  0.009
1/02/1986   0.002   NA  0.009
1/03/1986   0.002   -0.003  1.000
1/04/1986   0.010   -0.003  0.041
1/05/1986   0.000   -0.001  -0.004
1/06/1986   0.005   0.003   0.005
1/07/1986   -0.003  0.005   0.012
1/08/1986   -0.001  -0.003  -0.021
1/09/1986   0.003   -0.001  0.012
1/10/1986   0.003   0.003   0.010
1/11/1986   -0.003  0.003   -0.003
1/12/1986   0.003   -0.003  0.022
1/01/1987   0.001   0.013   -0.004
1/02/1987   0.004   -0.004  0.011
1/03/1987   0.004   0.008   0.005
1/04/1987   0.000   0.002   -0.002
1/05/1987   0.001   0.002   0.006
1/06/1987   0.004   0.010   0.00
我以以下方式读入数据:

require(RODBC)
conexcel <- odbcConnectExcel(xls.file="C:/data/example.xls")
s1 <- 'SOx'
dd <- sqlFetch(conexcel, s1)
odbcClose(conexcel)
我试图找到一种方法来防止这种对逻辑的强制,我认为这是导致后续错误的原因

我通过搜索SO找到了Q+A,但是我正在工作,不希望被允许编辑注册表以更改DWORD的默认值,因为(我知道此处设置的值决定了在Microsoft猜测数据类型并轰炸我的读取之前需要多少NAs)

现在,我认为最好的解决方案是反转Excel中的数据,并将其从上到下读取到R中


我喜欢好的黑客,但肯定有更好的解决方案

这不是一个bug,而是ODBC的一个特性(注意缺少R),如本文所述

(长页,检查“混合数据类型”)


由于使用ODBC读取Excel文件的能力相当有限,我更喜欢Gabor提到的替代方法之一,更喜欢XLCONNECT

请尝试此处列出的其他Excel界面:请参阅
> str(dd)
'data.frame':   29 obs. of  4 variables:
 $ period: POSIXct, format: "1985-02-01" "1985-03-01" ...
 $ n     : num  0.00833 -0.00338 0.00157 0.00562 0.00117 ...
 $ n#ft  : logi  NA NA NA NA NA NA ...
 $ n#pt  : num  0.02515 -0.02394 0.0154 0.01224 0.00301 ...