R - 识别并删除重复行的一个实例[重复]

Posted

技术标签:

【中文标题】R - 识别并删除重复行的一个实例[重复]【英文标题】:R - Identify and remove ONE instance of duplicate rows [duplicate] 【发布时间】:2021-09-13 16:33:04 【问题描述】:

对于上下文:这是我最近发布的这个查询的后续:R - Identify and remove duplicate rows based on two columns

我需要做一些与我在该帖子中描述的非常相似的事情,但让我在这里完整解释一下。

我有一些看起来像这样的数据(如果相关,还有许多其他列包含其他数据):

Course_ID   Text_ID
33          17
33          17
58          17
5           22
8           22
42          25
42          25
17          26
17          26
35          39
51          39

我需要确定Course_IDText_ID 有两个或多个匹配值的任何实例。例如,在上面的数据中,两列中的前两行是相同的(33 和 17)。我只需要删除这些重复行中的一个。

最终数据应如下所示:

Course_ID   Text_ID
33          17
58          17
5           22
8           22
42          25
17          26
35          39
51          39

我在上一篇文章中提供的解决方案删除了​​所有重复行的所有实例。

提前致谢。

【问题讨论】:

您可以使用dplyr::distinct() 仅返回唯一行。 【参考方案1】:
subset(df, !duplicated(df[c('Course_ID', 'Text_ID')]))
   Course_ID Text_ID
1         33      17
3         58      17
4          5      22
5          8      22
6         42      25
8         17      26
10        35      39
11        51      39

甚至

df[!duplicated(df[c('Course_ID', 'Text_ID')]), ]

如果只有 2 列如图所示,只需执行unique(df)

【讨论】:

【参考方案2】:

这行得通吗:

library(dplyr)
df %>% group_by(Course_ID, Text_ID) %>% distinct()
# A tibble: 8 x 2
# Groups:   Course_ID, Text_ID [8]
  Course_ID Text_ID
      <dbl>   <dbl>
1        33      17
2        58      17
3         5      22
4         8      22
5        42      25
6        17      26
7        35      39
8        51      39

【讨论】:

以上是关于R - 识别并删除重复行的一个实例[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从数据框中删除行的命令[重复]

R - 根据两列识别和删除重复行

查找重复行的索引 [重复]

查找重复行的索引 [重复]

python实现删除重复行并计数

R - 检查 r 数据框行的任何列中是不是存在 NA,如果存在,则删除该行 [重复]