下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容,每篇文章都在 5000 字以上,质量平均分高达 94 分,看全文请点击下面链接:
2章8节:认识R与数据库连接和网络爬虫,学会在R中使用SQL语言_sql和r语言-CSDN博客文章浏览阅读174次。R语言作为一种强大的统计计算和数据分析工具,不仅在数据处理和可视化方面表现出色,还在与数据库连接和网络爬虫方面具备强大功能。本文将介绍如何在R中进行数据库连接和网络爬虫,并展示如何使用SQL语言在R中进行数据操作。_sql和r语言https://blog.csdn.net/2301_79425796/article/details/140678486欢迎订阅我们专栏
.......前面部分请点击上面链接看原文
2、在R中SQL语言查询数据库
大家知道,SQL专为数据操作而设计,能够高效执行复杂的查询、筛选、排序、分组等操作。在R中,通过SQL语句进行数据操作,代码更简洁明了,便于维护和理解。尤其对于复杂的多表联结操作,SQL的表达能力更强。特别适合一些之前使用SQL语言的朋友们。与R语言结合在一起,这样就可以R与SQL的结合可以利用数据库系统的优势,同时保持R在数据分析和统计建模方面的强大功能。
本文将通过具体的示例,展示如何使用 sqldf
包对经典的数据集 iris
进行基本的 SQL 查询。
安装和加载 sqldf 包
首先,需要确保安装并加载 sqldf
包。可以使用以下命令进行安装和加载:
install.packages("sqldf")library(sqldf)
iris
数据集是 R 中自带的经典数据集之一,我们用这个数据集来演示。
data(iris)
iris
数据集是由 Ronald A. Fisher 在 1936 年引入的经典数据集,广泛用于机器学习和数据分析教学。它包含 150 个观测值,每个观测值代表一朵鸢尾花的测量结果,包括花萼长度、花萼宽度、花瓣长度、花瓣宽度四个变量,以及鸢尾花的种类(setosa、versicolor、virginica)。该数据集因其简单性和多样性,常用于演示分类和聚类算法。iris
数据集通过不同种类花朵的测量特征,展示了数据在多维空间中的分布,有助于理解和应用统计方法和机器学习模型。
1. 计算总行数
我们可以使用 sqldf
运行 SQL 查询来计算 iris
数据集中的总行数:
result <- sqldf("select count(*) from iris")
print(result)
输出结果表明 iris
数据集包含 150 行数据。
count(*)1 150
2. 按类别计算行数
我们可以按 Species
列对数据集进行分组,并计算每个类别的行数:
result <- sqldf("select Species, count(*) from iris group by Species")
print(result)
输出结果表明 iris
数据集中,每个物种的观测值数量均为 50。
Species count(*)
1 setosa 50
2 versicolor 50
3 virginica 50
3. 按某列排序并限制结果数
我们还可以对数据集按 Sepal.Length
列进行降序排序,并获取前 3 行数据:
result <- sqldf('select * from iris order by "Sepal.Length" desc limit 5')
print(result)
输出结果表明 iris
数据集中,Sepal.Length
最大的前三个观测值均属于 virginica
物种。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 7.9 3.8 6.4 2.0 virginica
2 7.7 3.8 6.7 2.2 virginica
3 7.7 2.6 6.9 2.3 virginica
4 7.7 2.8 6.7 2.0 virginica
5 7.7 3.0 6.1 2.3 virginica
4. 筛选条件查询
可以使用 WHERE
子句对数据集进行条件筛选,例如筛选出 Sepal.Length
大于 7 的观测值:
result <- sqldf('select * from iris where "Sepal.Length" > 7')
print(result)
输出结果将包含所有 Sepal.Length
大于 7 的观测值。
> print(result)Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 7.1 3.0 5.9 2.1 virginica
2 7.6 3.0 6.6 2.1 virginica
3 7.3 2.9 6.3 1.8 virginica
4 7.2 3.6 6.1 2.5 virginica
5 7.7 3.8 6.7 2.2 virginica
6 7.7 2.6 6.9 2.3 virginica
7 7.7 2.8 6.7 2.0 virginica
8 7.2 3.2 6.0 1.8 virginica
9 7.2 3.0 5.8 1.6 virginica
10 7.4 2.8 6.1 1.9 virginica
11 7.9 3.8 6.4 2.0 virginica
12 7.7 3.0 6.1 2.3 virginica
我们也可以使用多个条件对数据集进行筛选,例如筛选出 Sepal.Length
大于 5 且 Species
为 setosa
的观测值:
result <- sqldf('select * from iris where "Sepal.Length" > 5 and Species = "setosa"')
print(result)
输出结果如下。
> print(result)Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 5.4 3.9 1.7 0.4 setosa
3 5.4 3.7 1.5 0.2 setosa
4 5.8 4.0 1.2 0.2 setosa
5 5.7 4.4 1.5 0.4 setosa
6 5.4 3.9 1.3 0.4 setosa
7 5.1 3.5 1.4 0.3 setosa
8 5.7 3.8 1.7 0.3 setosa
9 5.1 3.8 1.5 0.3 setosa
10 5.4 3.4 1.7 0.2 setosa
11 5.1 3.7 1.5 0.4 setosa
12 5.1 3.3 1.7 0.5 setosa
13 5.2 3.5 1.5 0.2 setosa
14 5.2 3.4 1.4 0.2 setosa
15 5.4 3.4 1.5 0.4 setosa
16 5.2 4.1 1.5 0.1 setosa
17 5.5 4.2 1.4 0.2 setosa
18 5.5 3.5 1.3 0.2 setosa
19 5.1 3.4 1.5 0.2 setosa
20 5.1 3.8 1.9 0.4 setosa
21 5.1 3.8 1.6 0.2 setosa
22 5.3 3.7 1.5 0.2 setosa
5. 列的计算
我们可以使用 AVG
函数计算某列的平均值,例如计算 Sepal.Length
的平均值:
result <- sqldf('select avg("Sepal.Length") as Avg_Sepal_Length from iris')
print(result)
输出结果:
> print(result)Avg_Sepal_Length
1 5.843333
可以通过 SQL 查询创建新的计算列,例如计算 Sepal.Length
和 Sepal.Width
的和:
result <- sqldf('select *, ("Sepal.Length" + "Sepal.Width") as Sepal_Sum from iris')
head(result)
输出结果用head()函数将包含新的列 Sepal_Sum
,其值为 Sepal.Length
和 Sepal.Width
的和。
head(result)Sepal.Length Sepal.Width Petal.Length Petal.Width Species Sepal_Sum
1 5.1 3.5 1.4 0.2 setosa 8.6
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.7
5 5.0 3.6 1.4 0.2 setosa 8.6
6 5.4 3.9 1.7 0.4 setosa 9.3
6. 列的计算使用 LIKE 进行模式匹配
可以使用 LIKE
运算符进行模式匹配,例如筛选 Species
列包含 setosa
的观测值:
result <- sqldf('select * from iris where Species like "setosa"')
head(result)
输出结果将包含 Species
列包含 setosa
的所有观测值。
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
二、R的网络爬虫
网络爬虫(Web Scraping)是一种用于自动提取网页内容的技术。通过模拟浏览器行为,网络爬虫可以访问网站、读取网页源代码,并从中提取所需的信息。这种技术在数据分析、市场研究、学术研究等领域有广泛的应用,能够帮助用户从大量的网页中快速获取数据。
.......后面部分请看原文
欢迎订阅我们专栏,深度系统地学习R语言。
为帮助大家更出色地掌握临床统计、数据挖掘以及人工智能建模的入门知识和应用,由于众多同学在计算机编程上经验欠缺,特此开设《R 语言与数据科学的终极指南》专栏。该专栏每周至少会定期更新三篇,直到整个专栏更新完成。每篇文章都在 5000 字以上,质量平均分高达 94 分。要提醒大家的是,每结束一个章节,专栏的优惠力度就会减小,当下正是订阅的最佳优惠时段,诚邀各位积极订阅!
专栏《R 语言与数据科学的终极指南》链接:https://blog.csdn.net/2301_79425796/category_12729892.html?spm=1001.2014.3001.5482