R与Oracle数据库的连接

2018-09-03

2018-09-03
R与Oracle数据库连接

1 R与Oracle数据库的连接


  1)电脑的配置准备

  在windows窗口下,对数据库的ODBC连接进行配置,选择和自己电脑系统位数相同的进行匹配,如下所示:

  2)电脑的ODBC用户名和数据库进行匹配

  第一步:添加或配置数据库的ODBC;第二步:对ODBC的信息进行填写。

  操作如下图所示:

2 R连接数据库


  对Oracle数据库的用户名进行输入,连接Oracle数据库,以SQL调取数据库的数据。

library("RODBC")
data=odbcConnect("oracle",uid="Tongxue",pwd="tongxue",believeNRows=F) #用户名,密码进行连接
D1=sqlQuery(data," select * from 训练集数据") #读取数据库中的训练集数据
head(D1) #查看训练集数据中的前6行。
##      报告ID             身份证  放款时间 客户渠道 是否本地籍      工作城市
## 1 REPORT_ID            ID_CARD LOAN_DATE    AGENT   IS_LOCAL WORK_PROVINCE
## 2      8787 320382**********13 2017/2/15      APP     本地籍        320000
## 3      9410 120223**********8X 2017/3/13   wechat     本地籍        120000
## 4     22999 330226**********90 2017/2/27      APP     本地籍          <NA>
## 5     24820 230105**********20 2017/2/24      APP     本地籍        230000
## 6     25708 340222**********29 2017/1/16     <NA>     本地籍          <NA>
##         教育         婚姻   收入 是否有公积金 目标变量值
## 1  EDU_LEVEL MARRY_STATUS SALARY     HAS_FUND          Y
## 2       本科         已婚      3            0          0
## 3       <NA>         已婚      6            1          0
## 4 专科及以下         已婚      4            0          0
## 5 专科及以下         已婚      2            0          1
## 6       专科         未婚   <NA>            1          0

  对Oracle数据库进行调取,查看数据库的清单数据,其中目标变量值是违约情况,涉及1违约,0不违约;客户渠道是指办理某些业务的渠道,教育是指的其教育水平。

D2=sqlQuery(data,"select 目标变量值,nvl(客户渠道,'其它渠道'),nvl(教育,'其它'),婚姻,是否有公积金,count(*) from 训练集数据 group by 目标变量值,客户渠道,教育,婚姻,是否有公积金")#对数据库中的训练集数据进行分组调取
head(D2) #查看分组调取后的数据
##   目标变量值 NVL(客户渠道,'其它渠道') NVL(教育,'其它') 婚姻 是否有公积金
## 1          0                      APP       专科及以下 已婚            0
## 2          0                 其它渠道             本科 已婚            0
## 3          1                   wechat       专科及以下 已婚            0
## 4          0                 其它渠道             本科 未婚            1
## 5          0                 其它渠道             专科 未婚            0
## 6          0                 其它渠道             专科 已婚            1
##   COUNT(*)
## 1     1385
## 2     1940
## 3       34
## 4      707
## 5     1470
## 6     2056

  通过对客户渠道和目标变量值进行分组查看,可以看出在目标变量值下的不同客户数占比情况。

D3=sqlQuery(data,"select 目标变量值,nvl(客户渠道,'其它渠道'),count(*) 客户数 from 训练集数据  group by 目标变量值,客户渠道 order by count(*) desc ")#对数据库中的训练集数据进行分组调取
head(D3)#查看分组调取后的数据
##   目标变量值 NVL(客户渠道,'其它渠道') 客户数
## 1          0                 其它渠道  20110
## 2          0                      APP   5870
## 3          0                   wechat   1242
## 4          1                 其它渠道    938
## 5          1                      APP    774
## 6          0                 chinapnr    326

  通过SQL,可以得出数据中的客户渠道、客户数二者间的占比,能够看出客户渠道的客户数排名占比情况,得出除了其他渠道和APP外,涉及最多的渠道是wechat。

返回: R 语言, R的接口