R 数据操作:dplyr 包与管道操作
安装 并 加载 dplyr 包。这是 R 语言中处理数据框最核心的工具之一。
打开 R 或 RStudio,运行 以下代码来完成环境准备:
# 安装包(如果尚未安装)
install.packages("dplyr")
# 加载包
library(dplyr)
理解管道操作 (%>%)
管道操作符 %>% 的作用是将上一步的结果直接传递给下一步的函数作为第一个参数。
例如,传统的写法是嵌套函数 func2(func1(data)),这很难阅读。使用管道后,逻辑变为 data %>% func1() %>% func2(),这就像是在说“拿 数据,做 第一步,做 第二步”。
为了更直观地理解数据流向,请看以下处理流程:
graph LR
A["原始数据"] --> B["筛选行"]
B --> C["选择列"]
C --> D["排序"]
D --> E["新数据"]
核心动词速查
dplyr 提供了一组动词来处理数据。以下是常用功能的对照表:
| 动词 | 功能 | 代码示例 |
|---|---|---|
filter |
按条件筛选行 | filter(mtcars, mpg > 20) |
select |
按名称选择列 | select(mtcars, mpg, cyl) |
mutate |
创建新列 | mutate(mtcars, kg = wt * 453.6) |
arrange |
对行排序 | arrange(mtcars, mpg) |
summarise |
汇总计算 | summarise(mtcars, avg_mpg = mean(mpg)) |
group_by |
分组处理 | group_by(mtcars, cyl) |
实战演练:分步操作
以下示例将使用 R 内置的 mtcars 数据集。
1. 筛选特定行
保留 气缸数 (cyl) 为 6 的所有汽车。
result <- mtcars %>%
filter(cyl == 6)
# 查看结果
print(result)
注意:判断相等必须使用双等号 ==,单等号 = 是赋值。
2. 选择特定列
选取 每加仑英里数 (mpg) 和马力 (hp) 这两列。
result <- mtcars %>%
select(mpg, hp)
print(result)
3. 创建新变量
计算 车重的公斤数。原数据中 wt 单位是千磅,1 千磅约等于 453.6 公斤。
result <- mtcars %>%
mutate(wt_kg = wt * 453.6)
print(head(result))
4. 排序数据
按 每加仑英里数 (mpg) 从高到低 排序。默认是升序,使用 desc() 函数实现降序。
result <- mtcars %>%
arrange(desc(mpg))
print(head(result))
综合应用:组合拳
在实际工作中,通常需要连续执行多个操作。利用管道符,可以将上述步骤串联起来,一次性完成。
目标:找出所有 6 缸 (cyl == 6) 的车,只保留 mpg 和 wt 列,计算 出车重公斤数,并按 油耗从低到高 排序。
输入 并 运行 以下代码块:
final_data <- mtcars %>%
filter(cyl == 6) %>% # 1. 筛选 6 缸车
select(mpg, wt) %>% # 2. 只选油耗和重量
mutate(wt_kg = wt * 453.6) %>% # 3. 计算公斤数
arrange(mpg) # 4. 按油耗升序排列
# 输出最终结果
print(final_data)
分组汇总
分组汇总是数据分析中最强大的功能之一。结合 group_by 和 summarise,可以计算不同组别的统计量。
计算 不同气缸数 (cyl) 对应的平均油耗 (mpg)。
summary_data <- mtcars %>%
group_by(cyl) %>% # 1. 按气缸数分组
summarise(
avg_mpg = mean(mpg), # 2. 计算平均油耗
count = n() # 3. 计算该组有多少辆车
) %>%
arrange(desc(avg_mpg)) # 4. 按平均油耗降序排列
print(summary_data)
暂无评论,快来抢沙发吧!