我有一个关于在 R 中的元组中排序后删除重复项的问题。
假设我有一个值数据框
df<-cbind(c(1,2,7,8,5,1),c(5,6,3,4,1,8),c(1.2,1,-.5,5,1.2,1))
甲和乙
a=df[,1]
b=df[,2]
temp<-cbind(a,b)
我正在做的是基于排序元组的唯一性。例如,我想保留 a=1,2,7,8,1 和 b=5,6,3,4,8 并删除条目 a[5] 和 b[5]。这基本上是为了确定两个对象之间的交互。1 对 5、2 对 6 等,但 5 对 1 与 1 对 5 相同,因此我想删除它。
我开始走的路线如下。我创建了一个函数,对每个元素进行排序并将结果放回向量中。
sortme<-function(i){sort(temp[i,])}
sorted<-t(sapply(1:nrow(temp),sortme))
并得到以下结果
a b
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
[5,] 1 5
[6,] 1 8
然后我唯一的排序结果
unique(sorted)
这使
a b
[1,] 1 5
[2,] 2 6
[3,] 3 7
[4,] 4 8
[5,] 1 8
然后,我还使用 !duplicated 来获取真/假结果列表,我可以在原始数据集中使用这些结果从另一个单独的列中提取值。
T_F<-!duplicated(sorted)
final_df<-df[T_F,]
我想知道的是,我是否以正确的方式处理非常大的数据集,或者是否已经有内置函数来执行此操作。