【问题标题】:How to get unique pairs from dataframe in R? [duplicate]如何从 R 中的数据框中获取唯一对? [复制]
【发布时间】:2016-12-29 15:39:14
【问题描述】:

我有这个数据框:

      [,1]            [,2]           
 [1,] "CHC.AU.Equity" "SGP.AU.Equity"
 [2,] "CMA.AU.Equity" "SGP.AU.Equity"
 [3,] "AJA.AU.Equity" "AOG.AU.Equity"
 [4,] "AJA.AU.Equity" "GOZ.AU.Equity"
 [5,] "AJA.AU.Equity" "SCG.AU.Equity"
 [6,] "ABP.AU.Equity" "AOG.AU.Equity"
 [7,] "AOG.AU.Equity" "FET.AU.Equity"
 [8,] "SGP.AU.Equity" "CHC.AU.Equity"

如何只过滤唯一对?例如。 - 在上面的 df 中,第 8 行将“匹配”第 1 行,并被排除在外。我正在尝试使用 setequal(),但我似乎无法让它工作。有 'setunique' 类型的函数吗?

【问题讨论】:

  • 你试过unique(dataFrame)吗?
  • 据我所知,unique 看不到无序对之间的相等性。似乎不排除“匹配”。实际上,它似乎也不适用于有序对。 “重复”似乎可以解决问题。

标签: r


【解决方案1】:

我们可以尝试使用apply 循环遍历行,sort 元素,转置输出,应用duplicated,否定它以返回 TRUE/FALSE 的逻辑索引以表示唯一和重复,并使用它对行进行子集化。

m1[!duplicated(t(apply(m1, 1, sort))),]
#         [,1]            [,2]           
#[1,] "CHC.AU.Equity" "SGP.AU.Equity"
#[2,] "CMA.AU.Equity" "SGP.AU.Equity"
#[3,] "AJA.AU.Equity" "AOG.AU.Equity"
#[4,] "AJA.AU.Equity" "GOZ.AU.Equity"
#[5,] "AJA.AU.Equity" "SCG.AU.Equity"
#[6,] "ABP.AU.Equity" "AOG.AU.Equity"
#[7,] "AOG.AU.Equity" "FET.AU.Equity"

【讨论】:

  • 呃。太容易了。谢谢!
猜你喜欢
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-21
相关资源
最近更新 更多