如何让R语言通过RODBC库读写数据库的数据

Python022

如何让R语言通过RODBC库读写数据库的数据,第1张

一、 安装RODBC库

1、进入R语言的GUI界面(RGUI.EXE),在菜单栏选择“程序包/安装程序包”(如图

2、在弹出的窗口里往下拉,选择RODBC如图,点击确定

3、在ODBC数据源管理器里将需要的数据库添加进去,这里笔者使用的是SQL Server2008,驱动程序选择Native Client10.0

3、在R语言窗口输入连接语句

>library(RODBC)

**这里是载入RODBC库

>channel<-odbcConnect("MyTest",uid="ripley",case="tolower")

**连接刚才添加进数据源的“MyTest”数据库

**ch <- odbcConnect("some dsn ", uid = "user ", pwd = "**** ")

**表示用户名为user,密码是****,如果没有设置,可以直接忽略

>data(USArrests)

**将“USArrests”表写进数据库里(这个表是R自带的)

>sqlSave(channel,USArrests,rownames = "state",addPK = TRUE)

**将数据流保存,这时候打开SQL Server就可以看到新建的USArrests表了

>rm(USArrests)

>sqlTables(channel)

**给出数据库中的表

>sqlFetch(channel,"USArrests",rownames = "state")

**输出USArrests表中的内容

>sqlQuery(channel,"select * from USArrests")

**调用SELECT查询语句并返回结果(如图)

>sqlDrop(channel,"USArrests")

**删除表

>odbcClose(channel)

**最后要记得关闭连接

R语言中的dplyr包非常神奇,里面包含很多的函数,今天我们就来介绍下窗口函数的应用。

窗口函数应用

mtcars %>% group_by(cyl) %>% mutate(rank= min_rank(desc(mpg)))

mtcars %>% group_by(cyl) %>% mutate(mpg_max = max(mpg))

原来的明细还保留,同时每个分组的统计值算出来了,是不是很方便

1.2 批量操作

同时若你嫌麻烦一个个地对变量进行操作,还可以使用mutate_each函数对数据框中的变量批量操作,通过调整funs(即functions)和vars(variables)参数控制functions的数量,以及参与变形的variables,这里控制variables的技巧与select函数相似。

#对每个变量进行排名

mtcars%>%mutate_each(funs(dense_rank))

mpg cyl disp hp drat wt qsec vs am gear carb

1 16 2 13 11 16 9 6 1 2 24

2 16 2 13 11 16 12 10 1 224

3 19 16 615 7 22 2 221

4 17 2 16 115 1624 2 111

5 13 3 23 156 18 10 1 112

#对disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),disp)

mpg cyl disp hp dratwt qsec vs am gear carb dense_rank min_rank

1 21.0 6 160.0 110 3.90 2.620 16.46 0 144 13 13

2 21.0 6 160.0 110 3.90 2.875 17.02 0 144 13 13

3 22.8 4 108.0 93 3.85 2.320 18.61 1 141 6 6

4 21.4 6 258.0 110 3.08 3.215 19.44 1 031 16 18

5 18.7 8 360.0 175 3.15 3.440 17.02 0 032 23 27

6 18.1 6 225.0 105 2.76 3.460 20.22 1 031 15 17

7 14.3 8 360.0 245 3.21 3.570 15.84 0 034 2327

#对除了disp的变量进行排名

mtcars%>%mutate_each(funs(dense_rank,min_rank),-disp)

2、transmute

返回值中不包含原数据集变量,只保留计算转换后的变量。

mtcars%>%mutate(wt_log=log(wt))

mtcars%>%transmute(wt_log=log(wt))

mtcars %>%mutate(displ_l = disp / 61.0237)

mtcars %>%transmute(displ_l = disp / 61.0237)