当前位置:   article > 正文

第五章:数据操作Ⅱ:数据处理及加工 第一节:使用SQL处理数据

第五章:数据操作Ⅱ:数据处理及加工 第一节:使用SQL处理数据

我们可以使用sqldf包来实现使用mySQL处理数据,它可以减少数据转换的麻烦,使SQL语句用户更容易访问数据,我们可以借助sqldf包,在给出SQL命令后,自动生成Schema,并将数据加载到表格,然后执行SQL语句,并且,如果SQL的执行结果会被再次加载到R,由于该处理过程是自动进行的,所以用户不必安装数据框并设置环境。

sqldf包的主函数为sqldf(),具有以下功能

我们先安装数据包

  1. install.packages("sqldf")
  2. library(sqldf)

之后,我们可以使用sqldf()函数来查看鸢尾花数据,例如我们可以选取Species列,不过在此之前我们需要安装RSQLite包

  1. install.packages("RSQLite")
  2. library(RSQLite)

#因为这通常是因为sqldf()默认情况下尝试连接到一个SQLite数据库,而SQLite是一种轻量级的数据库引擎,可以在本地文件中存储数据,适合用于在内存中处理数据

安装完毕以后,我们可以

  1. > # 将SQLite作为sqldf()函数的后端,即设置sqldf()函数使用SQLite作为执行SQL查询的数据库引擎
  2. > options(sqldf.driver = "SQLite")
  3. > data("iris")#将iris加载入内存中
  4. > result <- sqldf("SELECT DISTINCT Species FROM iris")
  5. > View(result)

就可以看到Species的种类了

由此,我们就可以是用sqldf函数进行一些操作,例如求Sepal.Length的平均值

  1. result <- sqldf("SELECT avg(`Sepal.Length`) FROM iris WHERE Species='setosa'")
  2. > result
  3.   avg(`Sepal.Length`)
  4. 1               5.006
  5. #这边特别提醒在选取列的时候要使用反引号,否则会出现无法选择列的情况

我们也可以求不同瓶中鸢尾花的Sepal.Length的平均值,可以使用SQL的group by语句

  1. > sqldf("select Species,avg(`Sepal.Length`) from iris group by Species")
  2.      Species avg(`Sepal.Length`)
  3. 1     setosa               5.006
  4. 2 versicolor               5.936
  5. 3  virginica               6.588

sqldf包提供了多种优化,比如将磁盘作保存空间,或者创建1次数据后可以重复使用,不必每次运行sqldf()函数时都先将数据框保存到数据库后然后处理、删除。sqldf默认支持sqlite,因此在sqldf中可以适当使用索引以提升速度,并且,由于采用了基于数据库的技术,能够大大提高程序的运行速度

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号