我可以删除两列 R 中的重复组合吗

Can I remove duplicate combinations across two columns R

我有一个看起来像这样的数据集

firm1 firm2
A      B   
A      D  
A      G   
B      A
D      A
G      A

如您所见,它给出了独特的信息,但组合仍然相同。

我想过滤掉独特的组合,所以我的数据集看起来像这样。

firm1 firm2
A      B   
A      D  
A      G   

如何过滤掉这些重复(但相反)的组合?

我会建议这种 base R 方法:

#Data
df <- structure(list(firm1 = c("A", "A", "A", "B", "D", "G"), firm2 = c("B", 
"D", "G", "A", "A", "A")), row.names = c(NA, -6L), class = "data.frame")

代码:

df[!duplicated(lapply(strsplit(paste0(df$firm1,df$firm2),split = ''),sort)),]

输出:

  firm1 firm2
1     A     B
2     A     D
3     A     G

这是一个使用 igraph

的解决方案
library(igraph)
setNames(unique(as_data_frame(graph_from_data_frame(df, directed = FALSE))), names(df))

这给出了

  firm1 firm2
1     A     B
2     A     D
3     A     G