R语言dplyr包常用函数

文章目录

  • 一、dplyr包
  • [二、新加列 mutate()](#二、新加列 mutate())
  • [三、选取列 select()](#三、选取列 select())
  • [四、修改列名 rename()](#四、修改列名 rename())
  • [五、筛选 filter()](#五、筛选 filter())
  • [六、统计汇总 summarise()](#六、统计汇总 summarise())
  • [七、分组统计 group_by()](#七、分组统计 group_by())
  • [八、排序 arrange()](#八、排序 arrange())
  • [九、左联结 left_join()](#九、左联结 left_join())
  • [十、右联结 right_join()](#十、右联结 right_join())
  • [十一、满联结 full_join()](#十一、满联结 full_join())

一、dplyr包

tidyverse里的数据处理工具包dplyr被誉为"瑞士军刀"。

dplyr主要包含以下10个主要的函数:

  • mutate(),select(),rename(),filter()
  • summarise(),group_by(),arrange()
  • left_join(),right_join(),full_join()

二、新加列 mutate()

c 复制代码
df
##    a b c
## 1  1 3 3
## 2 23 5 8
## 3  3 7 6
## 4  3 5 8

mutate(.data = df, d = c(1,2,3,4)) 
##    a b c d
## 1  1 3 3 1
## 2 23 5 8 2
## 3  3 7 6 3
## 4  3 5 8 4

新加的向量的长度要么与数据框的行数等长,要么长度为1,通过循环机制补齐。


三、选取列 select()

c 复制代码
df %>% select(a, b)
##    a b
## 1  1 3
## 2 23 5
## 3  3 7
## 4  3 5

如果不想要某列,可以在变量前面加 - 或者 !,两者的结果是一样的。

c 复制代码
df %>% select(-a)
##   b c
## 1 3 3
## 2 5 8
## 3 7 6
## 4 5 8

四、修改列名 rename()

格式为 rename(.data, new_name = old_name)

c 复制代码
df %>% 
  select(a, b) %>% 
  rename(bb = b)
##    a bb
## 1  1  3
## 2 23  5
## 3  3  7
## 4  3  5

五、筛选 filter()

c 复制代码
df %>% filter(a == 3)
##   a b c
## 1 3 7 6
## 2 3 5 8

六、统计汇总 summarise()

summarise()函数非常强大,主要用于统计汇总,往往与其他函数配合使用。

c 复制代码
df %>% summarise(
    mean_a   = mean(a),
    median_b = median(b),
    n        = n(),
    sum_d    = sum(d)
)

##   mean_a median_b n sum_d
## 1    7.5        5 4    17

summarise()mutate() 一样,也是创建新的变量(新的列)。区别在于,mutate()是在原数据框的基础上增加新的一列;而summarise()在成立的新的数据框中创建一列。


七、分组统计 group_by()

summarise()函数往往配合group_by()一起使用,即,先分组再统计。

c 复制代码
df1
##    a b c
## 1 s1 3 3
## 2 s2 5 8
## 3 s1 7 6
## 4 s2 5 8

df1 %>%
    group_by(a) %>%
    summarise(
        mean_b = mean(b),
        sd_c   = sd(c)
    )
    
## # A tibble: 2 × 3
##   a     mean_b  sd_c
##   <chr>  <dbl> <dbl>
## 1 s1         5  2.12
## 2 s2         5  0   

八、排序 arrange()

按照 a 从低到高排序

c 复制代码
df %>% arrange(a)
##    a b c
## 1  1 3 3
## 2  3 7 6
## 3  3 5 8
## 4 23 5 8

默认情况是从小到大排序,如果从高到低降序排序呢,有两种方法,第一种方法是在用于排序的变量前面加 - 号,第二种方法可读性更强些,需要使用desc()函数。

c 复制代码
df %>% arrange(-a)
##    a b c
## 1 23 5 8
## 2  3 7 6
## 3  3 5 8
## 4  1 3 3

df %>% arrange(desc(a))
##    a b c
## 1 23 5 8
## 2  3 7 6
## 3  3 5 8
## 4  1 3 3

九、左联结 left_join()

c 复制代码
df1
##    a b c
## 1 s1 3 3
## 2 s2 5 8
## 3 s1 7 6
## 4 s2 5 8

df2
##    a  b
## 1 s2 22
## 2 s3 66

# 写法一
left_join(df1, df2, by = "a")
# 写法二
df1 %>% left_join(df2, by = "a")

##    a b.x c b.y
## 1 s1   3 3  NA
## 2 s2   5 8  22
## 3 s1   7 6  NA
## 4 s2   5 8  22

十、右联结 right_join()

c 复制代码
# 写法一
right_join(df1, df2, by = "a")
# 写法二
df1 %>% right_join(df2, by = "a")

##    a b.x  c b.y
## 1 s2   5  8  22
## 2 s2   5  8  22
## 3 s3  NA NA  66

十一、满联结 full_join()

c 复制代码
df1 %>% full_join(df2, by = "a")
##    a b.x  c b.y
## 1 s1   3  3  NA
## 2 s2   5  8  22
## 3 s1   7  6  NA
## 4 s2   5  8  22
## 5 s3  NA NA  66
相关推荐
临床数据科学和人工智能兴趣组1 天前
R语言中,列表是一种非常灵活的数据结构,它可以存储不同类型的对象,如向量、矩阵、数据框、甚至其他列表
数据结构·数据库·r语言·r语言-4.2.1·临床试验
临床数据科学和人工智能兴趣组2 天前
矩阵是一种二维数组,每个矩阵仅能包含一类数据(数值型、字符型或者逻辑型)
数据库·线性代数·矩阵·r语言·r语言-4.2.1·临床试验
临床数据科学和人工智能兴趣组4 天前
网络爬虫(Web Scraping)是一种用于自动提取网页内容的技术
r语言·r语言-4.2.1
生态学者4 天前
Ecological Indicators | 机场鸟调的新方法:用 AWM-PC1 读懂干扰梯度下的鸟类群落
人工智能·算法·r语言·微信公众平台
临床数据科学和人工智能兴趣组4 天前
运用rvest包进行数据爬虫
r语言·r语言-4.2.1
霸道流氓气质5 天前
基于本地 PaddleOCR 的 PDF 文字识别完整技术文档
开发语言·r语言·pdf
临床数据科学和人工智能兴趣组5 天前
SQL专为数据操作而设计,能够高效执行复杂的查询、筛选、排序、分组等操作
r语言·r语言-4.2.1
青春不败 177-3266-05206 天前
基于R、Python的Copula变量相关性分析及AI大模型应用
人工智能·python·r语言·贝叶斯·统计学·copula
统计学小王子7 天前
分类模型评价指标——R语言(数学建模常用)
数学建模·分类·r语言
Biotree_20258 天前
Cell Death Dis.(IF=12.2)|厦门大学徐兵教授团队解锁滤泡性淋巴瘤治疗新策略:PI3Kδ与PPARα双靶向重塑代谢激活FoxO1
r语言