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。