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_ID
和Text_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 - 识别并删除重复行的一个实例[重复]的主要内容,如果未能解决你的问题,请参考以下文章