在实际数据分析中,数据框中可能存在重复的行,这些重复的行可能是由于数据采集、录入等环节出现的错误,也可能是由于数据本身的特性导致的。如果不去除这些重复行,可能会对数据分析结果产生误导,影响数据分析的准确性和可靠性。因此,有必要去除数据框中重复行的有助于保证数据的准确性和可靠性。dplyr 中的distinct函数是一种用于去除数据框中重复行的函数,它可以帮助我们快速、方便地去除重复行进行数据清洗和分析。除了 distinct函数,本文还介绍了其它一些更条件话的去重方法。
1、distinct()
方法
Note: dplyr::distinct()
函数对数据框去重,默认保留重复记录的第一条记录
1.1 通过指定一列或多列进行去重
df %>% distinct( `column1` , `column2` , `···`, .keep_all = T) #.keep_all表示去重后返回数据框的所有列向量
1.2 通过基于所有列向量去除重复行记录
df %>% distinct()
2、group_by-slice()
方法
除了使用distinct
函数处理重复行记录外,在dplyr管道中,还推荐使用group_by
配合使用 slice
实现更多样化的去重操作,如:
- 随机保留1条重复行记录
df %>% group_by(`column1` , `···`) %>% slice_sample(n = 1) %>% data.frame()
- 保留第1个重复行记录
df %>% group_by(`column1` , `···`) %>% slice(1) %>% data.frame()
- 保留最后1个重复行记录
df %>% group_by(`column1` , `···`) %>% slice( n() ) %>% data.frame()
- 根据一列向量进行分组排序再去重保留符合要求的记录
df %>% group_by(`column1`) %>% arrange(desc(`column3`)) %>% slice(1) %>% data.frame()