如何使用 dplyr 查找重复元素
您可以使用以下方法使用 dplyr 查找数据框中的重复元素:
方法 1:显示所有重复行
library (dplyr) #display all duplicate rows df %>% group_by_all() %>% filter(n()> 1 ) %>% A group()
方法 2:显示所有重复行的重复项数
library (dplyr)
#display duplicate count for all duplicated rows
df %>%
add_count(col1, col2, col3) %>%
filter(n> 1 ) %>%
distinct()
本教程通过以下数据框解释了如何在实践中使用每种方法:
#create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
points=c(10, 10, 8, 14, 15, 15, 17, 17))
#view data frame
df
team position points
1 AG 10
2 AG 10
3AF 8
4 AF 14
5 BG 15
6 BG 15
7 BF 17
8 BF 17
示例 1:显示所有重复行
以下代码显示如何显示数据框中的所有重复行:
library (dplyr)
#display all duplicate rows in data frame
df %>%
group_by_all() %>%
filter(n()> 1 ) %>%
A group()
# A tibble: 6 x 3
team position points
1 AG 10
2 AG 10
3 BG 15
4 BG 15
5 BF 17
6 BF 17
结果是一个包含 6 行的数据帧,每行都是重复行。
注意:如果您只想知道哪些行在特定列中具有重复值,则可以使用类似group_by(team)之类的方法来仅查找在team列中具有重复值的行。
示例 2:显示所有重复行的重复项数
以下代码显示如何显示数据框中所有重复行的重复计数:
library (dplyr)
#display duplicate count for each row
df %>%
add_count(team, position, points) %>%
filter(n> 1 ) %>%
distinct()
team position points n
1 GA 10 2
2 BG 15 2
3 BF 17 2
第n列显示每行的重复项总数。
例如:
- 值为 A、G 和 10 的行在数据块中出现了2次。
- 值为 B、G 和 15 的行在数据块中出现了2次。
- 值为 B、F 和 17 的行在数据块中出现了2次。
注意:如果您只想知道哪些行在特定列中具有重复值,请在add_count()函数中仅包含那些特定列。
其他资源
以下教程解释了如何在 R 中执行其他常见任务:
如何使用dplyr过滤唯一值
如何使用 dplyr 按多个条件进行过滤
如何计算R中列中出现的次数