本系列主要介绍R语言在数据分析领域的应用包括:
R语言编程基础、R语言可视化、R语言进行数据操作、R语言建模、R语言机器学习算法实现、R语言统计理论方法实现。
本系列会完成下去,请大家多多关注点赞支持,一起学习~
参考资料:
Data Analysis and Prediction Algorithms with R
很多时候,我们的数据保存在sql数据库中,本文介绍一下如何使用R语言来连接mysql数据库,首先安装RMySQL
包
# 导入相关库
library(RMySQL)
在RMySQL中,我们使用dbConnect()函数连接mysql数据库,具体语法如下
# 连接数据库
dbconn<-dbConnect(
MySQL(),
host="localhost",
dbname="test",
user="root",
password="密码",
port=3306)
现在我们导入了指定的数据库,我们使用dbListTables()
可以数据库中有哪些表
dbListTables(dbconn)
使用dbSendQuery()函数可以读取mysql数据库里面的内容,相当于是执行SQL代码,再使用fetch()函数将结果保存在数据框中,具体用法如下
假设我们要读取emp表中所有的信息
# 返回查询结果
result <- dbSendQuery(dbconn, "select * from emp")
# 返回前n行数据保存在数据框中
df <- fetch(result, n = 5)
df
emp_id | emp_name | salary | birthday | telephone | depart_id_fk |
---|---|---|---|---|---|
1 | Zenobia | 1848 | 1994-10-08 | 18811769371 | 1 |
2 | Yvette | 2579 | 1992-06-11 | 18811769325 | 2 |
3 | Xaviera | 4439 | 1986-09-21 | NA | 3 |
4 | Winni | 2546 | 1975-09-29 | 18811769305 | 4 |
6 | Vivien | 5593 | 1980-07-19 | 18811769315 | 6 |
当n=-1时,则返回返回所有的数据
df <- fetch(result,n=-1)
dim(df)
例如我们要查询emp表中工资高于5000的所有人员信息,按工资升序排序,并只显示前十个人员信息
result <- dbSendQuery(dbconn, "select * from emp where salary > 5000 order by salary limit 10")
df <- fetch(result,n=-1)
df
emp_id | emp_name | salary | birthday | telephone | depart_id_fk |
---|---|---|---|---|---|
151 | Ophelia | 5050 | 1984-04-24 | 18811768591 | 9 |
34 | Ophelia | 5050 | 1984-04-24 | 18811768591 | 9 |
6 | Vivien | 5593 | 1980-07-19 | 18811769315 | 6 |
123 | Vivien | 5593 | 1980-07-19 | 18811769315 | 6 |
230 | Antonia | 5712 | 1982-03-22 | 15001012122 | 17 |
113 | Antonia | 5712 | 1982-03-22 | 15001012122 | 17 |
97 | Constance | 5712 | 1985-02-05 | 13701322150 | 23 |
214 | Constance | 5712 | 1985-02-05 | 13701322150 | 23 |
156 | Novia | 5997 | 1980-12-23 | 18701373066 | 1 |
39 | Novia | 5997 | 1980-12-23 | 18701373066 | 1 |
还有其他的mysql操作都可以在dbSendQuery中实现
dbDisconnect(dbconn)
Warning message:
"Closing open result sets"
TRUE