R语言 如何写SQL查询
在这篇文章中,我们将学习如何在 R编程语言 中编写SQL查询 。
什么是SQL查询
SQL是结构化查询语言的缩写。SQL查询用于与数据库进行交互。使用SQL查询,我们可以访问和操作存储在数据库中的数据。在SQL查询的帮助下,我们可以在数据库中创建、读取、更新和删除数据,并在数据库中执行更多的操作。
sqldf包
我们将使用sqldf包在R中运行SQL查询。Sqldf是一个方便的R工具,允许在R数据框架上执行SQL操作。MySQL、PostgreSQL、H2和SQLite等数据库都可以用sqldf来使用。我们可以使用sqldf包在R中运行SQL查询。
注意: 如果我们对SQL命令有很好的理解,在R中使用SQL会变得非常容易。点击 这里 来学习SQL的基础知识。
安装和导入sqldf包
在R中运行下面的命令来安装sqldf包。
# installing sqldf package
install.packages("sqldf")
现在,在安装了sqldf包之后,我们必须导入它以使用其功能。
为了导入sqldf包,在R中运行下面的命令。
# Importing sqldf
library(sqldf)
使用sqldf执行基本的SQL操作
我们将使用IRIS数据集,其中有10个条目,我们将使用SQL查询对其进行各种操作。
使用SQL查询读取数据
例1 :
在这里,我们将使用SQL选择命令来查看数据框的数据。首先,我们导入sqldf库,然后读取CSV文件,并将其作为一个数据框架存储到一个变量 “df”。之后,我们使用select命令来显示数据。
# Importing sqldf library
library(sqldf)
# Reading CSV file
df <- read.csv("iris.csv")
# Reading data from data frame
# using SQL select query
sqldf("select * from df")
输出
例2 :
在这个例子中,我们将通过使用SQL查询选择一个特定的列,从数据框架中读取一个特定的列
# Importing sqldf library
library(sqldf)
# Reading CSV file
df <- read.csv("iris.csv")
# Selecting columns from data frame
sqldf("select [sepal_length],
[sepal_width], [species] from df")
输出
上述代码的输出显示了三列数据,即萼片长度、萼片宽度和物种,因为我们在SQL查询中只选择这三列。
使用SQL查询对数据进行排序
在这段代码中,我们在SQL选择语句中使用了order by子句,因此我们的数据是通过对 “sepal_length “列的数据进行排序来显示的,正如输出中看到的那样。
# Importing sqldf library
library(sqldf)
# Reading CSV file
df <- read.csv("iris.csv")
# Reading data from data frame
# by applying sorting on a column
sqldf("select * from df order by sepal_length")
输出
注意: 默认的排序顺序是升序,要以降序排序,我们可以在语句末尾使用desc关键字。
使用SQL查询最大和最小值
在这里,我们将在使用sqldf的选择命令中使用min()和max()函数来获得数据框架中的列的最小和最大值。
# Importing sqldf library
library(sqldf)
# Reading CSV file
df <- read.csv("iris.csv")
# Applying min() and max() functions
# to get minimum and maximum value.
sqldf("select max(sepal_length) from df")
sqldf("select min(sepal_length) from df")
输出
注意: 与上面提到的函数类似,我们也可以对数据集的特定数据值进行任何操作。
使用SQL查询删除数据
在这里,我们将使用R中的SQL查询的删除命令来删除数据框中的行。正如我们在输出中看到的,”Iris-virginica “的所有记录都从数据框中删除了。
# Importing sqldf library
library(sqldf)
# Reading CSV file
df<-read.csv("iris.csv")
# Deleting rows where
# species is Iris-virginica
df<-sqldf(c("delete from df where
species='Iris-virginica'",
"select * from df"))
print("After delete rows")
# Displaying data frame
sqldf("select * from df")
输出
使用SQL查询更新数据
在这里,我们将使用R中SQL查询的更新命令来更新数据框中的记录。我们可以看到在输出中,所有 “Iris-versicolor “的物种名称都变成了 “versicolor”。
# Importing sqldf library
library(sqldf)
# Reading CSV file
df<-read.csv("iris.csv")
# Update species name from
# Iris-versicolor to versicolor
print("Before update")
sqldf("select * from df")
# Updating values
df <- sqldf(c("update df set species='versicolor'
where species='Iris-versicolor'",
"select * from df"))
print("After update")
sqldf("select * from df")
输出