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 %>% filter(!duplicated(str_c(pmin(Var1, Var2), pmax(Var1, Var2) )))
@Alex 它正在将每行的元素最小值和最大值粘贴在一起,然后对其进行复制。 min
、max
按字母数字顺序返回
@akrun,感谢您的帮助以上是关于r 从包含 2 列组合的副本的数据框中删除行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何从包含特定列中特定字符串的熊猫数据框中删除行? [复制]