我正在尝试从包含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
答案 0 :(得分:3)
我们可sort
row
使用apply
MARGIN=1
,转置(t
)输出,使用duplicated
获取逻辑重复行的索引,否定(!
)以获取未重复的行,并对数据集进行子集化。
combo[!duplicated(t(apply(combo, 1, sort))),]
# Var1 Var2
#2 B A
#3 C A
#6 C B