R 语言 dplyr 包笔记

一、dplyr 包简介
dplyr 是 R 语言中用于数据处理和转换的核心包,是 tidyverse 生态系统的重要组成部分。它提供了一套统一的语法和高效的工具,让数据操作变得简单直观。dplyr 的主要优势包括:
直观的函数命名和语法
高效的数据处理性能
支持与数据库的直接连接和操作
与其他数据可视化和分析工具无缝集成
二、dplyr 核心函数
dplyr 包的核心功能由以下几个主要函数组成:
数据选择:select()
数据过滤:filter()
数据排序:arrange()
数据新增 / 修改:mutate()
数据汇总:summarize()
数据分组:group_by()
数据合并:join()系列函数
三、管道操作符 %>%
dplyr 中最强大的工具之一是管道操作符%>%,它允许我们将多个数据处理步骤连接起来,形成一个清晰的工作流程。管道操作符的作用是将左边的结果作为第一个参数传递给右边的函数。

data %>% 
  select(col1, col2) %>% 
  filter(col1 > 10) %>% 
  mutate(new_col = col1 * col2)

四、数据选择:select ()
select()函数用于选择数据框中的特定列。

# 选择指定列
data %>% select(col1, col2, col3)
# 选择除col2外的所有列
data %>% select(-col2)
# 选择以"peptide"开头的列
data %>% select(starts_with("peptide"))
# 选择包含"ID"的列
data %>% select(contains("ID"))
# 选择列名在指定范围内的列
data %>% select(col1:col5)
# 重命名列并选择
data %>% select(new_name = old_name, col1)
# 选择特定类型的列
data %>% select(where(is.numeric))

五、数据过滤:filter ()
filter()函数用于根据条件筛选数据框中的行。

# 筛选col1大于10的行
data %>% filter(col1 > 10)
# 筛选col1等于"value"且col2小于5的行
data %>% filter(col1 == "value" & col2 < 5)
# 筛选col1在指定值列表中的行
data %>% filter(col1 %in% c("value1", "value2"))
# 筛选col1不为NA的行
data %>% filter(!is.na(col1))
# 多条件筛选
data %>% filter(col1 > 10 | (col2 < 5 & col3 == "value"))
# 使用函数进行筛选
data %>% filter(between(col1, 5, 15))  # 筛选col1在5到15之间的行

六、数据排序:arrange ()
arrange()函数用于对数据框进行排序。

# 按col1升序排序
data %>% arrange(col1)
# 按col1降序排序
data %>% arrange(desc(col1))
# 多列排序:先按col1升序,再按col2降序
data %>% arrange(col1, desc(col2))

七、数据新增 / 修改:mutate ()
mutate()函数用于创建新列或修改现有列。

# 创建新列
data %>% mutate(new_col = col1 + col2)
# 修改现有列
data %>% mutate(col1 = col1 * 2)
# 基于条件创建新列
data %>% mutate(
  category = ifelse(col1 > 10, "High", "Low")
)
# 创建多个列
data %>% mutate(
  sum = col1 + col2,
  product = col1 * col2,
  ratio = col1 / col2
)

八、数据汇总:summarize ()
summarize()函数用于将数据汇总为单行或多行摘要。

# 计算平均值、总和等
data %>% summarize(
  mean_col1 = mean(col1, na.rm = TRUE),
  sum_col2 = sum(col2, na.rm = TRUE),
  n = n()  # 计算行数
)
# 计算多个统计量
data %>% summarize(
  min = min(col1),
  max = max(col1),
  mean = mean(col1),
  median = median(col1),
  sd = sd(col1)
)

九、数据分组:group_by ()
group_by()函数用于对数据进行分组,通常与summarize()或mutate()结合使用。

# 按group列分组并计算每组的平均值
data %>% 
  group_by(group) %>% 
  summarize(mean_value = mean(value))
# 多列分组
data %>% 
  group_by(group1, group2) %>% 
  summarize(mean_value = mean(value))
# 分组后创建新列
data %>% 
  group_by(group) %>% 
  mutate(group_mean = mean(value))

十、数据合并:join () 系列函数
dplyr 提供了多种数据合并函数:
inner_join():返回两个数据框中匹配的行
left_join():返回左数据框的所有行和匹配的右数据框的行
right_join():返回右数据框的所有行和匹配的左数据框的行
full_join():返回两个数据框的所有行
semi_join():返回左数据框中与右数据框匹配的行,但只保留左数据框的列
anti_join():返回左数据框中与右数据框不匹配的行

# 内连接
inner_join(df1, df2, by = "key")
# 左连接
left_join(df1, df2, by = c("key1" = "key2"))  # 不同列名的连接
# 多键连接
full_join(df1, df2, by = c("key1", "key2"))
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容