如何删除 r 中的重复行以便不留下任何重复行
您可以在 R 中使用以下方法从数据框中删除重复行,以便结果数据框中不会保留任何重复行:
方法一:使用Base R
new_df <- df[ ! (duplicated(df) | duplicated(df, fromLast= TRUE )), ]
方法2:使用dplyr
library (dplyr) new_df <- df %>% group_by(across(everything())) %>% filter(n() == 1 )
以下示例展示了如何在实践中使用以下数据框使用每种方法:
#create data frame df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'), points=c(20, 20, 28, 14, 13, 18, 27, 13)) #view data frame df team points 1 to 20 2 to 20 3 to 28 4 to 14 5 B 13 6 B 18 7 B 27 8 B 13
示例 1:使用 Base R
以下代码显示如何使用 R 基本函数从数据框中删除重复行,以便不保留任何行:
#create new data frame that removes duplicates so none are left
new_df <- df[ ! (duplicated(df) | duplicated(df, fromLast= TRUE )), ]
#view new data frame
new_df
team points
3 to 28
4 to 14
6 B 18
7 B 27
请注意,每个重复行均已从数据框中删除,并且不会保留任何重复行。
示例 2:使用 dplyr
以下代码演示了如何使用 R 中dplyr包中的函数从数据框中删除重复行,以便不保留任何行:
library (dplyr)
#create new data frame that removes duplicates so none are left
new_df <- df %>%
group_by(across(everything())) %>%
filter(n() == 1 )
#view new data frame
new_df
# A tibble: 4 x 2
# Groups: team, points [4]
team points
1 to 28
2 to 14
3 B 18
4 B 27
请注意,每个重复行均已从数据框中删除,并且不会保留任何重复行。
另请注意,这会产生与先前方法相同的结果。
注意:对于非常大的数据帧,dplyr 方法将比基本 R 方法更快。
其他资源
以下教程解释了如何在 R 中执行其他常见功能: