r 从包含 2 列组合的副本的数据框中删除行 [重复]

Posted

技术标签:

【中文标题】r 从包含 2 列组合的副本的数据框中删除行 [重复]【英文标题】:r remove rows from a data frame that contain a duplicate of either combination of 2 columns [duplicate] 【发布时间】:2015-08-16 13:56:20 【问题描述】:

我正在尝试从包含 2 列组合的数据框中删除行。例如以下代码:

vct <- c("A", "B", "C")
a <- b <- vct
combo <- expand.grid(a,b) #generate all posible combinations
combo <- combo[!combo[,1] == combo[,2],] #removes rows with matching column

生成这个数据框:

 Var1 Var2
2    B    A
3    C    A
4    A    B
6    C    B
7    A    C
8    B    C

如何删除行是 2 列的任意组合的重复项,即 #4 A B 被删除,因为 #2 B A 已经存在?生成的数据框如下所示:

 Var1 Var2
2    B    A
3    C    A
4    C    B

【问题讨论】:

【参考方案1】:

我们可以sort by row using apply with MARGIN=1,转置(t)输出,使用duplicated得到重复行的逻辑索引,取反(!)获取不重复的行,并对数据集进行子集化。

combo[!duplicated(t(apply(combo, 1, sort))),]
#   Var1 Var2
#2    B    A
#3    C    A
#6    C    B

【讨论】:

成功了,谢谢! @trock2000 没问题。很高兴为您提供帮助。 @Alex 试试combo %&gt;% filter(!duplicated(str_c(pmin(Var1, Var2), pmax(Var1, Var2) ))) @Alex 它正在将每行的元素最小值和最大值粘贴在一起,然后对其进行复制。 minmax按字母数字顺序返回 @akrun,感谢您的帮助

以上是关于r 从包含 2 列组合的副本的数据框中删除行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 R 中的数据框中删除重复的列组合

如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]

如何从 R 数据框中过滤列的唯一组合

从 R 中的整个数据帧中删除空格

如何从 VB.net 组合框中的数据库中获取特定列的所有行?

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