跳到主要内容

R的dplyr包

dplyr是R语言中一个强大的数据操作包,专为数据科学设计。它提供了一组简洁且一致的函数,用于对数据进行筛选、排序、汇总和转换。dplyr的设计目标是让数据操作变得更加直观和高效,特别适合处理大型数据集。

为什么选择dplyr?

  • 简洁的语法:dplyr的函数命名直观,易于理解和使用。
  • 高效性能:dplyr底层使用C++编写,处理大数据集时速度更快。
  • 管道操作符:结合管道操作符 %>%,可以轻松地将多个操作串联起来,使代码更具可读性。

安装dplyr

在开始使用dplyr之前,首先需要安装并加载它。你可以通过以下命令安装dplyr:

r
install.packages("dplyr")

安装完成后,加载dplyr包:

r
library(dplyr)

dplyr的核心功能

dplyr提供了五个核心函数,用于处理数据框(data frames):

  1. filter():根据条件筛选行。
  2. select():选择特定的列。
  3. mutate():创建或修改列。
  4. arrange():对行进行排序。
  5. summarize():对数据进行汇总。

1. filter():筛选行

filter() 函数用于根据条件筛选数据框中的行。例如,假设我们有一个包含学生成绩的数据框 students,我们可以筛选出成绩大于90的学生:

r
students <- data.frame(
name = c("Alice", "Bob", "Charlie"),
score = c(85, 92, 88)
)

high_scorers <- students %>%
filter(score > 90)

print(high_scorers)

输出:

   name score
1 Bob 92

2. select():选择列

select() 函数用于选择数据框中的特定列。例如,我们可以只选择 name 列:

r
names_only <- students %>%
select(name)

print(names_only)

输出:

     name
1 Alice
2 Bob
3 Charlie

3. mutate():创建或修改列

mutate() 函数用于创建新列或修改现有列。例如,我们可以添加一个新列 grade,根据分数给出等级:

r
students_with_grade <- students %>%
mutate(grade = ifelse(score >= 90, "A", "B"))

print(students_with_grade)

输出:

     name score grade
1 Alice 85 B
2 Bob 92 A
3 Charlie 88 B

4. arrange():排序

arrange() 函数用于对数据框的行进行排序。默认情况下,arrange() 会按升序排序。例如,我们可以按分数从低到高排序:

r
sorted_students <- students %>%
arrange(score)

print(sorted_students)

输出:

     name score
1 Alice 85
2 Charlie 88
3 Bob 92

5. summarize():汇总数据

summarize() 函数用于对数据进行汇总。例如,我们可以计算平均分数:

r
average_score <- students %>%
summarize(mean_score = mean(score))

print(average_score)

输出:

  mean_score
1 88.33333

实际案例:分析航班数据

让我们通过一个实际案例来展示dplyr的强大功能。我们将使用R内置的 nycflights13 数据集,该数据集包含了2013年纽约市三个机场的航班信息。

首先,加载数据集:

r
library(nycflights13)
data("flights")

案例1:筛选特定日期的航班

假设我们只想查看1月1日的航班:

r
jan_1_flights <- flights %>%
filter(month == 1 & day == 1)

print(jan_1_flights)

案例2:计算每个月的平均延误时间

我们可以使用 group_by()summarize() 来计算每个月的平均延误时间:

r
monthly_delay <- flights %>%
group_by(month) %>%
summarize(mean_delay = mean(dep_delay, na.rm = TRUE))

print(monthly_delay)

总结

dplyr是R语言中一个非常强大的数据操作工具,特别适合初学者。通过本文,你已经学习了dplyr的核心功能,包括 filter()select()mutate()arrange()summarize()。我们还通过实际案例展示了如何使用dplyr进行数据分析。

附加资源

练习

  1. 使用 filter() 筛选出 flights 数据集中延误时间超过2小时的航班。
  2. 使用 mutate() 创建一个新列 speed,表示航班的飞行速度(距离/时间)。
  3. 使用 summarize() 计算每个航空公司的平均延误时间。
提示

在练习中,尝试使用管道操作符 %>% 将多个操作串联起来,使代码更加简洁和易读。