全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6067 6
2012-07-31

小弟先用RODBC读取ACCESS文件,如下:


##用RODBC包从Access读取文件
library(RODBC)
odbcCloseAll()
temp <- odbcConnectAccess("C:\\R\\chntrp09.mdb")
dat <- sqlFetch(temp, "chntrp09", max = 24)
close (temp)

得到以下数据:

  家庭编号   个人编号  出行次数  权数  行程次数
HOUSEID      PERSONID   TDTRPNUM WTTRDFIN TOUR   TOUR_SEG TOURTYPE TRPCNT STOPS TOUR_FLG
1  20000017        1                  1            68170.67    1        1                 HO      1     0        0
2  20000017        1                  2            68170.67    2        1                OO      1     0        0
3  20000017        1                  3            68170.67    3        1                OH      1     0        0
4  20000017        1                  4            68170.67    4        1                 HO      1     0        0
5  20000017        1        5                      68170.67    5        1       OH      1     0        0
6  20000017        2        1                      69589.50    1        1       HO      2     1        1
7  20000017        2        2                      69589.50    1        2       HO      2     1        1
8  20000017        2        3                      69589.50    2        1       OO      2     1        1
9  20000017        2        4                      69589.50    2        2       OO      2     1        1
10 20000017        2        5                     69589.50    3        1       OH      2     1        1
11 20000017        2        6                     69589.50    3        2       OH      2     1        1
12 20000017        2        7                     69589.50    4        1       HO      1     0        0
13 20000017        2        8                     69589.50    5        1       OH      1     0        0
14 20000231        1        1                     522885.47    1        1       HW      2     1        1
15 20000231        1        2                     522885.47    1        2       HW      2     1        1
16 20000231        1        3                     522885.47    2        1       WH      1     0        0
17 20000231        1        4                     522885.47    3        1       HW      1     0        0
18 20000231        1        5                     522885.47    4        1       WH      1     0        0
19 20000521        1        1                     117718.43    1        1       HO      1     0        0
20 20000521        1        2                     117718.43    2        1       OH      3     2        1
21 20000521        1        3                     117718.43    2        2       OH      3     2        1
22 20000521        1        4                     117718.43    2        3       OH      3     2        1
23 20000521        2        1                     132561.49    1        1       HO      1     0        0
24 20000521        2        2                     132561.49    2        1       OH      1     0        0

我的目的是得到家庭中每个人一天的出行次数(TDTRPNUM)和行程次数(TOUR),因为原数据是按从1到N排列,而我想要的只是那个“N“,即总数。例如:我在这里列出了三个家庭(20000017,20000231和20000521)。家庭编号为20000017的第1个人,一天一共出行了5次(TDTRPNUM),行程一共是8次(TOUR),我想得到的是5和8。并且在旁边列出对应权数。应该如何在RODBC里用SQL语言查询呢??或者,大侠们有什么更好的办法?

以下是我想得到的数据列表样式:

  家庭编号   个人编号  出行次数  权数  行程次数
HOUSEID      PERSONID TDTRPNUM WTTRDFIN TOUR
1  20000017        1        5                68170.67    5
2  20000017        2        8                 69589.50    5
3  20000231        1        5                 522885.47    4
4  20000521        1        4                 117718.43    2
5  20000521        2        2                 132561.49     2

多谢了。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-8-1 13:53:06
自己搞出来了,因为第一次接触SQL,所以不知如何下手,参考论坛和教程后可以用SQL的函数简单实现,代码如下:

##用RODBC包从Access读取文件
library(RODBC)
odbcCloseAll()
temp <- odbcConnectAccess("C:\\R\\chntrp09.mdb")
dat <- sqlQuery(temp,
                "SELECT HOUSEID,PERSONID,MAX(TDTRPNUM) AS TRIPNUM,MAX(TOUR) AS TOURNUM,AVG(WTTRDFIN) AS WEIGHT FROM chntrp09 GROUP BY HOUSEID,PERSONID",
                max=5)
close (temp)
结果:

> dat
   HOUSEID PERSONID TRIPNUM TOURNUM    WEIGHT
1 20000017        1       5                 5         68170.67
2 20000017        2       8                 5         69589.50
3 20000231        1       5                 4         522885.47
4 20000521        1       4                 2         117718.43
5 20000521        2       2                 2         132561.49
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-8-1 16:24:03
njtdf 发表于 2012-8-1 13:53

##用RODBC包从Access读取文件
library(RODBC)
odbcCloseAll()
temp <- odbcConnectAccess("C:\\R\\chntrp09.mdb")
dat <- sqlQuery(temp,
                "SELECT HOUSEID,PERSONID,MAX(TDTRPNUM) AS TRIPNUM,MAX(TOUR) AS TOURNUM,AVG(WTTRDFIN) AS WEIGHT FROM chntrp09 GROUP BY HOUSEID,PERSONID",
                max=5)
close (temp)
厉害!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-1-21 22:20:11
njtdf 发表于 2012-8-1 13:53
自己搞出来了,因为第一次接触SQL,所以不知如何下手,参考论坛和教程后可以用SQL的函数简单实现,代码如下 ...
请问LZ,你有在WIN7 64位系统里R导入access数据吗?我失败了,
odbcconnetaccess is only usable with 32-bit windows....
先谢谢了!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-16 22:39:33
complicated 发表于 2013-1-21 22:20
请问LZ,你有在WIN7 64位系统里R导入access数据吗?我失败了,
odbcconnetaccess is only usable with 32 ...
请问,64位使用odbcConnect的问题解决了没
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-9-17 11:53:01
明建川 发表于 2014-9-16 22:39
请问,64位使用odbcConnect的问题解决了没
还没,一直没再用ACCESS了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群