来自Access的RODBC的数据导入错误

时间:2012-07-18 17:08:40

标签: r ms-access rodbc

我正在尝试将在访问数据库上执行的查询结果导入R.我可以使用RODBC包建立连接,并且我能够检索记录,因此与数据库的连接不是问题。问题是当我将它们读入R时,两列是不准确的。

访问中的查询从表中读取数据,然后根据我执行的计算生成两个附加列。我导入了18列,其中16列是从表中直接导出的,另外两列是计算列。当我在访问中执行此查询时,一切都很好。访问中两个计算列的结果(许多IIF语句的结果),我将称之为V1和V2,在运行查询后在访问中看起来像这样:

V1        V2
A        -.1
A          0
A         .2
B         .2
A        -.3
C          0
A         .03

V1取三个值(A,B,C),V2包含浮点数,范围从-35到1.5。

这些值正是我想要的,所以当我在访问中运行它时,我知道查询有效。

我想在R中获取这些相同的值,因此我运行相同的查询以生成上述结果,如下所示:

query = "Select ..."
channel = odbcConnectAccess2007("DatabaseLocation.accdb")
df = sqlQuery(channel, query)

同样,与数据库的连接不是问题。尝试从R运行此查询后,两个计算列(V1和V2)的结果与我在访问中运行查询时的结果不匹配。其他列直接从表中读取而不进行任何计算,它们应该是这样的。在R V1和V2中运行查询后如下所示:

V1          V2
A           0
A           0
A          .2
A          .2
A           0
A           0
A          .03

对于V1,每个值现在都相同(A)。对于V2,正确读取某些值,但不是全部。许多值已更改为0,现在V2中的最低值为-.07,而当我在访问中运行相同的查询时,V2中的最低值为-.35。未更改为0的值是正确的。

我的下一个想法是在访问中创建一个查询表,然后尝试读取整个新表。但是,我更倾向于按照我原先计划的方式获取数据,我想弄清楚这个问题,以便将来可以避免。

编辑:我无法显示实际查询,因为它是专有工作的一部分,但这是一个非常相似的查询:

Select 
#First calculated column
(IIF(M.V3 = 1, 'C', IIF(M.V3 = 2, 'B', 'A'))) AS v1,
#Second calculated column, which is shortened from the real thing
(IIF(M.V4=0 AND M.V5 = 1, .0401, 0) +
  IIF(m.V4=0 AND m.V5 = 0, -.0441, 0)) AS V2,
#other values are directly read from the table
  M.V3, M.V4, M.V5, M.V6, M.V7, M.V8, M.V9, 
M.V10, M.V11, M.V12, M.V13, M.V14, M.V15,
B.VFIRST & B.VLAST AS M.V16
FROM MASTER_TABLE M
INNER JOIN B_TABLE B ON M.V10 = B.V10

0 个答案:

没有答案
相关问题