你可以使用以下方法来寻找数据框架中的重复元素,使用dplyr。
方法1:显示所有重复的行
library(dplyr)
#display all duplicate rows
df %>%
group_by_all() %>%
filter(n()>1) %>%
ungroup()
方法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 A G 10
2 A G 10
3 A F 8
4 A F 14
5 B G 15
6 B G 15
7 B F 17
8 B F 17
例1:显示所有重复的行
下面的代码显示了如何显示数据框中所有重复的行:
library(dplyr)
#display all duplicate rows in data frame
df %>%
group_by_all() %>%
filter(n()>1) %>%
ungroup()
# A tibble: 6 x 3
team position points
1 A G 10
2 A G 10
3 B G 15
4 B G 15
5 B F 17
6 B F 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 A G 10 2
2 B G 15 2
3 B F 17 2
n列显示每行的重复总数。
比如说:
- 值为A、G和10的行在数据框中出现2次。
- 值为B,G,和15的行在数据框中出现2次。
- 值为B,F,和17的行在数据框中出现2次。
注意:如果你只想知道哪些行在特定的列中有重复的值,那么在**add_count()**函数中只包括那些特定的列。