R语言dplyr入门:第4天掌握数据处理核心

太棒了!你已经坚持到第4天,这是 R 语言学习中最关键的一天 ------因为从今天起,你将掌握 现代 R 数据处理的核心工具:dplyr

💡 dplyr 是"R语言数据科学"生态(tidyverse)的基石,语法清晰、效率高、代码可读性强,被全球数据分析师广泛使用。


🎯 第4天学习目标

✅ 安装并加载 dplyr

✅ 掌握四大核心函数:

  • filter():按条件筛选行
  • select():选择特定列
  • mutate():创建新变量(列)
  • arrange():对行排序
    ✅ 学会用 管道操作符 %>% 让代码像"流水线"一样流畅

📘 核心概念速览

函数 作用 类比
filter(df, 条件) 筛选满足条件的 Excel 的"筛选"功能
select(df, 列1, 列2) 选择需要的 隐藏不需要的列
mutate(df, 新列 = 表达式) 增加计算后的新列 Excel 添加公式列
arrange(df, 列名) 按某列升序排序 Excel 的"排序"

🔁 所有操作不会修改原始数据,而是返回一个新数据框(安全!)


💻 第4天完整练习脚本(复制到 RStudio 即可运行)

复制代码
# ==============================================
# R语言零基础学习 · 第4天练习(修正版)
# ==============================================

# ----------------------------
# Part 1: 安装并加载必要的包
# ----------------------------

# 如果是第一次使用,请取消注释并运行一次
# install.packages(c("dplyr", "tibble"))

library(dplyr)
library(tibble)

# ----------------------------
# Part 2: 使用内置数据集 mtcars 练习
# ----------------------------

# 查看 mtcars 前几行
head(mtcars)

# 将行名转为列(现在应该可以正常工作了)
mtcars_df <- mtcars %>%
  rownames_to_column(var = "车型")

head(mtcars_df)

# ----------------------------
# Part 3: 四大核心函数练习
# ----------------------------

# 1️⃣ filter() ------ 筛选:油耗(mpg)大于 20 的车
high_mpg <- mtcars_df %>%
  filter(mpg > 20)

print("油耗 > 20 的车型:")
select(high_mpg, 车型, mpg)

# 2️⃣ select() ------ 选择列:只要车型、马力(hp)、重量(wt)
car_info <- mtcars_df %>%
  select(车型, hp, wt)

head(car_info)

# 3️⃣ mutate() ------ 新增列:计算"每单位重量的马力"
mtcars_with_ratio <- mtcars_df %>%
  mutate(hp_per_wt = hp / wt)

select(mtcars_with_ratio, 车型, hp, wt, hp_per_wt) %>%
  head()

# 4️⃣ arrange() ------ 排序:按马力(hp)从高到低排序
cars_by_hp <- mtcars_df %>%
  arrange(desc(hp))

print("马力最高的前3款车:")
head(cars_by_hp, 3) %>% select(车型, hp)

# ----------------------------
# Part 4: 组合使用 + 管道 %>% 实战
# ----------------------------

result <- mtcars_df %>%
  filter(wt < 3 & mpg > 20) %>%
  select(车型, mpg, wt) %>%
  arrange(desc(mpg))

print("轻量高油耗车型(按油耗排序):")
print(result)

# ----------------------------
# Part 5: 在 iris 数据上练习
# ----------------------------

long_petal_virginica <- iris %>%
  filter(Species == "virginica" & Petal.Length > 6) %>%
  select(Petal.Length, Petal.Width, Species)

print("维吉尼亚鸢尾花中花瓣很长的样本:")
print(long_petal_virginica)

# ----------------------------
# Part 6: 你的小任务(修正版)
# ----------------------------

# 【任务1】在 mtcars 中:
task1_result <- mtcars_df %>%
  mutate(cost_per_gallon = 1 / mpg) %>%
  filter(cyl == 4) %>%
  arrange(cost_per_gallon) %>%
  select(车型, mpg, cyl, cost_per_gallon)

print("4缸车中油耗最优(成本最低)的前三名:")
head(task1_result, 3)

# 【任务2】在 iris 中:
setosa_avg <- iris %>%
  filter(Species == "setosa") %>%
  pull(Petal.Length) %>%
  mean()

cat("山鸢尾(setosa)平均花瓣长度:", round(setosa_avg, 2), "\n")

cat("\n🎉 第4天练习完成!\n")
复制代码
 mtcars_df <- mtcars %>%
+     rownames_to_column(var = "车型")等价于没有管道的写法:

mtcars_df <- rownames_to_column(mtcars, var = "车型")

理解 %>%(管道操作符)

  • 作用:把左边的结果传递给右边的函数作为第一个参数

  • 读作:"然后"

  • mtcars %>% rownames_to_column(var = "车型")

  • 意思是:"取 mtcars 数据集,然后把它的行名转成一列,列名叫做'车型'"

理解 rownames_to_column() 函数

  • 功能:将数据框的行名转换为一个新的列

  • 参数

    • .data:数据框(通过管道自动传入)

    • var:新列的名称(这里设为"车型")


🔑 管道操作符 %>% 是什么?

  • 读作 "然后"

  • 把前一个结果自动传给下一个函数的第一个参数

  • 避免嵌套:
    head(select(filter(mtcars, mpg>20), c(mpg,wt)))

    🔑 管道操作符 %>% 是什么?
    读作 "然后"
    把前一个结果自动传给下一个函数的第一个参数
    避免嵌套:
    ❌ head(select(filter(mtcars, mpg>20), c(mpg,wt)))

小技巧:在 RStudio 中输入 %>% 可按 Ctrl + Shift + M(Windows)或 Cmd + Shift + M(Mac)快速输入!


❓ 常见问题

Q:dplyr 和之前学的 subset() 有什么区别?

A:dplyr 更一致、更强大、支持管道,适合复杂操作;subset() 适合简单临时筛选。

Q:为什么有时候列名要加引号,有时候不用?

A:在 dplyr 中,列名直接写,不加引号 (如 mpg),这是它的设计优势!

Q:pull() 是什么?

A:从数据框中提取某一列为向量 ,方便后续计算(如 mean())。


📁 保存建议

  • 文件名:day4_dplyr.R
  • 和前几天脚本放在一起,形成完整学习路径

🚀 下一步预告(第5天)

📌 第5天:基础可视化(ggplot2 入门)

你将学会用一行代码画出专业级图表:散点图、柱状图、箱线图......

相关推荐
晨曦5432107 天前
R语言零基础入门指南
r
Solyn_HAN7 天前
非编码 RNA(ceRNA/lncRNA/circRNA)分析完整流程:从数据下载到功能验证(含代码模板)
python·bash·生物信息学·r
追风少年ii1 个月前
脚本更新--CosMx、Xenium的邻域通讯分析(R版本)
linux·python·r语言·r·单细胞·培训
卡卡_R-Python3 个月前
大数据探索性分析——抽样技术应用
大数据·r
lishaoan776 个月前
实验设计与分析(第6版,Montgomery)第3章单因子实验:方差分析3.11思考题3.4 R语言解题
统计分析·r·实验设计·残差分析·单因子方差分析·正态假设·lsd
叶庭云1 年前
Matlab 和 R 语言的数组索引都是从 1 开始,并且是左闭右闭的
matlab·编程语言·r·数组索引·从 1 开始
亿牛云爬虫专家1 年前
利用 html_table 函数轻松获取网页中的表格数据
爬虫·html·爬虫代理·表格·r·代理ip·html_table
WW、forever1 年前
【R语言管理】Pycharm配置R语言及使用Anaconda管理R语言虚拟环境
pycharm·r
kylin王国1 年前
shiny动态生成颜色选择器并将其用于绘图
r语言·r·shiny