如何在R中选择数据框中的唯一行(附实例)

292 阅读1分钟

你可以使用以下方法从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

由于在球队位置列上有四个唯一的数值组合,所以会返回四行。