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

时间:2015-08-16 13:56:20

标签: r dataframe subset

我正在尝试从包含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 个答案:

答案 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