你可以使用以下方法从R的数据框中选择唯一的行。
方法1:在所有列中选择唯一的行
library(dplyr)
df %>% distinct()
方法2:基于一列选择唯一行
library(dplyr)
df %>% distinct(column1, .keep_all=TRUE)
方法3:基于多列选择唯一行
library(dplyr)
df %>% distinct(column1, column2, .keep_all=TRUE)
本教程解释了如何在以下数据框中实际使用每种方法:
#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)
#select rows with unique values across all columns
df %>% distinct()
team position points
1 A G 10
2 A F 8
3 A F 14
4 B G 15
5 B F 17
我们可以看到,数据框中有5条唯一的行。
注意:当遇到重复的行时,只有第一条唯一的行被保留。
例2:基于一列选择唯一行
下面的代码显示了如何仅基于团队列选择唯一行:
library(dplyr)
#select rows with unique values based on team column only
df %>% distinct(team, .keep_all=TRUE)
team position points
1 A G 10
2 B G 15
因为团队列中只有两个唯一的值,所以只保留每个值第一次出现的记录。
注意:参数.keep_all=TRUE告诉R在输出中保留所有其他列。
例3:基于多列选择唯一行
下面的代码显示了如何仅根据球队和位置列来选择唯一行:
library(dplyr)
#select rows with unique values based on team and position columns only
df %>% distinct(team, position, .keep_all=TRUE)
team position points
1 A G 10
2 A F 8
3 B G 15
4 B F 17
由于在球队和位置列上有四个唯一的数值组合,所以会返回四行。