如何在维护数据集的同时根据特定列删除重复的行。我尝试使用这些links1,link2
我想要做的是希望在第3列到第6列的基础上看到歧义。如果它们的值相同,则处理后的数据集应该删除行,如示例所示:
我使用了这段代码但是我给了我一半的结果:
Data <- unique(Data[, 3:6])
假设我的数据集是这样的
A B C D E F G H I J K L M
1 2 2 1 5 4 12 A 3 5 6 2 1
1 2 2 1 5 4 12 A 2 35 36 22 21
1 22 32 31 5 34 12 A 3 5 6 2 1
我想要的输出是:
A B C D E F G H I J K L M
1 2 2 1 5 4 12 A 3 5 6 2 1
1 22 32 31 5 34 12 A 3 5 6 2 1
答案 0 :(得分:2)
假设您的数据存储为数据框,您可以尝试:
Data <- Data[!duplicated(Data[,3:6]),]
#> Data
# A B C D E F G H I J K L M
#1 1 2 2 1 5 4 12 A 3 5 6 2 1
#3 1 22 32 31 5 34 12 A 3 5 6 2 1
函数duplicated()
返回一个逻辑向量,在这种情况下包含每行的信息,关于第3列到第6列中条目的组合是否重新出现在数据集的其他位置。此逻辑向量的否定!
用于从数据集中选择行,从而生成具有第3列到第6列中条目的唯一组合的数据集。
感谢@thelatemail在我之前的帖子中指出了一个错误。
答案 1 :(得分:2)
另一个选项是来自unique
的{{1}}。它有data.table
选项。我们将'data.frame'转换为'data.table'(by
),使用setDT(df1)
并指定unique
by
library(data.table)
unique(setDT(df1), by= names(df1)[3:6])
# A B C D E F G H I J K L M
#1: 1 2 2 1 5 4 12 A 3 5 6 2 1
#2: 1 22 32 31 5 34 12 A 3 5 6 2 1
返回unique
,删除了重复的行。