登录
首页精彩阅读R语言SQL管理数据库的方法
R语言SQL管理数据库的方法
2017-02-18
收藏

R语言SQL管理数据库的方法

SQL,是结构语言化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
sqldf程序包是R语言中实用的数据管理辅助工具,sqldf程序包中比较常用的是sqldf函数中的select 语句。

#使用SQL语句操作数据框,需要加载的程序包sqldf,tcltk,使用iris数据集以及演示

library(sqldf)

library(tcltk)

head(iris)#了解数据集由5各变量组成

#取出前几行

a1r <- head(iris,10)#一般方法

a1s <- sqldf("select * from iris limit 10")#取出数据框的前六行,关键词limit

identical(a1r, a1s)#比较两个数据框是否相同

#取出子集

a2r <- subset(iris, grepl("^se", Species))#取出物种列中以se开头的数据子集

a2s <- sqldf("select * from iris where Species like 'se%'")#取出数据的子集,关键词like

all.equal(as.data.frame(a2r), a2s)#检验数据是否有差异

#指定某变量值为两个以上时的提取

a3r <- subset(iris, Species %in% c("setosa", "virginica"))#在iris数据集中,选出量物种是setosa和virginica的行

a3s <- sqldf("select * from iris where Species in ('setosa', 'virginica')")#注意单引号和双引号

row.names(a3r) <- NULL#a3r选的是子集,因而行名还是与原数据集相同

identical(a3r, a3s)

#指定某变量范围时数据集的提取

a4r <- subset(iris,  Petal.Length >= 0 &  Petal.Length <= 2.0)#选取breaks在20到30之间的数据

a4s <- sqldf("select * from iris where Petal.Length between 0 and 2.0", row.names = TRUE)#使用row.names=TRUE可以不把行名重命名
iris$Petal.Length

#数据合计

a5r <- aggregate(iris[1:2], iris[5], mean)#计算出了3个物种前两个变量的平均值

a5s <- sqldf('select Species, avg("Sepal.Length") `Sepal.Length`, avg("Sepal.Width") `Sepal.Width` from iris group by Species')#关键词group by

all.equal(a5r, a5s)#查看数据是否相同

# 提取某变量breaks从小到大排序后的前3行的数据,除数据属性和列名外相同

head(warpbreaks)

a6r <- head(warpbreaks[order(warpbreaks$breaks), ], 3)

a6s <- sqldf("select * from warpbreaks order by breaks limit 3")

# attributes(a6r) <- attributes(a6s) <- NULL#去除属性

row.names(a6r) <- NULL#去除列

identical(a6r, a6s)

# 提取某变量breaks从大到小排序后的前3行的数据,除数据属性和列名外相同

a7r <- head(warpbreaks[order(warpbreaks$breaks, decreasing = TRUE), ], 3)

a7s <- sqldf("select * from warpbreaks order by breaks desc limit 3")#关键词order by,desc表示降序

row.names(a7r) <- NULL

identical(a7r, a7s)

数据分析咨询请扫描二维码

客服在线
立即咨询