文章目录

R 数据操作:dplyr 包与管道操作

发布于 2026-04-09 01:17:21 · 浏览 3 次 · 评论 0 条

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) 的车,只保留 mpgwt 列,计算 出车重公斤数,并 油耗从低到高 排序

输入运行 以下代码块:

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_bysummarise,可以计算不同组别的统计量。

计算 不同气缸数 (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)

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文