gpt4 book ai didi

excel - RODBC 读取错误,其中 Excel 列包含前导 NA

转载 作者:行者123 更新时间:2023-12-02 17:07:58 25 4
gpt4 key购买 nike

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

在 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)

这将整个第二列读取为NA。我认为这是因为它被猜测是合乎逻辑的,因此随后的数字被评估为无效,因此NA

> 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 ...

我正在尝试找到一种方法来防止这种强制逻辑,我认为这是导致后续错误的原因。

我找到了this通过搜索 SO 进行问答,但是我正在工作,不希望被允许编辑注册表来更改 DWORD 的默认值,如 suggested (我知道这里设置的值决定了在微软猜测数据类型并轰炸我的读取之前需要多少个NA)。

现在,我认为最好的解决方案是反转 Excel 中的数据,并将其上下颠倒地读入 R 中。

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

最佳答案

这不是一个错误,而是 ODBC 的一个功能(注意缺少 R),如此处记录的

http://support.microsoft.com/kb/257819/en-us

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

由于使用 ODBC 读取 Excel 文件相当有限,因此我更喜欢 Gabor 提到的替代方案之一,尤其是 XLConnnect。

关于excel - RODBC 读取错误,其中 Excel 列包含前导 NA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12152412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com