基于R语言的统计分析基础:使用dplyr包进行数据操作

dplyr是R语言中一个功能强大且流行的数据操作包,它提供了一系列用于数据清洗、转换、汇总和可视化的工具。这些工具包括选择列、过滤行、排序、添加或修改列、汇总数据以及分组和合并数据集的函数。dplyr的设计使得数据操作变得简单直观,同时保持高性能,并且支持与外部数据库的连接、懒惰数据操作以及窗口函数。此外,dplyr鼓励使用整洁数据的原则,并与其他R语言包(如tidyrggplot2等)有很好的集成,形成一个完整的数据分析工作流。

dplyr常用函数与用法

函数 用途
select() 选择数据集中的列
filter() 基于条件过滤行
arrange() 对数据集进行排序
mutate() 添加新列或修改现有列
summarise() 计算汇总统计量,减少到每组的单一行
group_by() 将数据集分组,以便进行分组操作
ungroup() 移除数据集的分组信息
distinct() 删除重复行,保留唯一值
inner_join() 根据两个数据集的共同列进行内连接
left_join() 根据左数据集的键和右数据集的键进行左连接
right_join() 根据右数据集的键和左数据集的键进行右连接
full_join() 根据两个数据集的键进行全连接
semi_join() 返回左数据集在右数据集中有匹配的记录
anti_join() 返回左数据集中不在右数据集中的记录

函数使用示例

这里先导入dplyr包,随后新建两个data.feame数据集用于后续操作,一个数据框用于存储学生信息,一个数据框用于存储专业课成绩

r 复制代码
library(dplyr)

students <- data.frame(  
  student_id = c(1, 2, 3, 4, 5),  
  name = c("GGBond", "FeiFei", "DickDai", "SuperFuckMan", "TeacherMihu"),  
  age = c(16, 17, 15, 23, 42)  
)  

courses <- data.frame(  
  course_id = c(101, 102, 103, 104, 105),  
  course_name = c("Math", "Science", "History", "Math", "Art"),  
  student_id = c(1, 2, 3, 1, 4)  
)
使用select()函数选择数据集中的列
r 复制代码
selected_students <- students %>%  select(name, age)  
selected_students
使用filter()函数基于条件过滤行
r 复制代码
filtered_students <- students %>%  filter(age > 21)  
filtered_students
使用arrange()函数对数据集进行排序
r 复制代码
arranged_students <- students %>%  arrange(desc(age))  
arranged_students
使用mutate()函数添加新列或修改现有列
r 复制代码
mutated_students <- students %>%  mutate(is_adult = age >= 21)  
mutated_students
使用summarise()函数计算汇总统计量,减少到每组的单一行
r 复制代码
summarised_students <- students %>%  summarise(avg_age = mean(age))  
summarised_students
使用group_by()ungroup()函数将数据集分组,以便进行分组操作,然后移除分组信息
r 复制代码
grouped_students <- students %>%  group_by(age) %>%  summarise(count = n())  
grouped_students
移除分组信息
r 复制代码
ungrouped_students <- grouped_students %>%  ungroup()  
ungrouped_students
使用distinct()函数删除重复行,保留唯一值
r 复制代码
distinct_courses <- courses %>%  distinct(course_name)  
distinct_courses
使用inner_join()函数根据两个数据集的共同列进行内连接
r 复制代码
inner_joined <- inner_join(students, courses, by = "student_id")  
inner_joined
使用left_join()函数根据左数据集的键和右数据集的键进行左连接
r 复制代码
left_joined <- left_join(students, courses, by = "student_id")  
left_joined
使用right_join()函数根据右数据集的键和左数据集的键进行右连接
r 复制代码
right_joined <- right_join(students, courses, by = "student_id")  
right_joined
使用full_join()函数根据两个数据集的键进行全连接
r 复制代码
full_joined <- full_join(students, courses, by = "student_id")  
full_joined
使用semi_join() 返回左数据集在右数据集中有匹配的记录
r 复制代码
semi_joined <- semi_join(students, courses, by = "student_id")  
print(semi_joined)
使用anti_join() 返回左数据集中不在右数据集中的记录
r 复制代码
anti_joined <- anti_join(students, courses, by = "student_id")  
print(anti_joined)

distinct_courses <- courses %>%  distinct(course_name)  
distinct_courses
相关推荐
IT技术分享社区11 分钟前
C#实战:使用腾讯云识别服务轻松提取火车票信息
开发语言·c#·云计算·腾讯云·共识算法
极客代码14 分钟前
【Python TensorFlow】入门到精通
开发语言·人工智能·python·深度学习·tensorflow
疯一样的码农20 分钟前
Python 正则表达式(RegEx)
开发语言·python·正则表达式
&岁月不待人&42 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
StayInLove1 小时前
G1垃圾回收器日志详解
java·开发语言
lzhlizihang1 小时前
【Hive sql 面试题】求出各类型专利top 10申请人,以及对应的专利申请数(难)
大数据·hive·sql·面试题
无尽的大道1 小时前
Java字符串深度解析:String的实现、常量池与性能优化
java·开发语言·性能优化
Tianyanxiao1 小时前
如何利用探商宝精准营销,抓住行业机遇——以AI技术与大数据推动企业信息精准筛选
大数据·人工智能·科技·数据分析·深度优先·零售
爱吃生蚝的于勒1 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
大数据编程之光1 小时前
Hive 查询各类型专利 top10 申请人及专利申请数
大数据·数据仓库·hive·hadoop