r 从包含 2 列组合的副本的数据框中删除行
r remove rows from a data frame that contain a duplicate of either combination of 2 columns
我正在尝试从包含 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
我如何删除两列任意组合的重复行,以便删除 #4 A B 因为 #2 B A 已经存在?生成的数据框如下所示:
Var1 Var2
2 B A
3 C A
4 C B
我们可以 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
我正在尝试从包含 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
我如何删除两列任意组合的重复行,以便删除 #4 A B 因为 #2 B A 已经存在?生成的数据框如下所示:
Var1 Var2
2 B A
3 C A
4 C B
我们可以 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