使用R查找给出唯一组合的最小列组合

时间:2017-07-10 16:25:05

标签: r

我有一个包含大约2500个命名列的数据框,每个列有43个命名行。每行的每个元素包含该行唯一的两个可能的文本值之一,或一个空白。我想找到最小的列组合,它会给我一行独特的非空白异源值。我对R最熟悉,所以解决方案就是最好的。

以简易版本的挑战来说明:

> l <- data.frame(C1 = c("a","i","","y"), C2 = c("b","i","q","x"), C3 = c("b","","p",""), C4 = c("b","j","q","y"), C5 = c("a","","p",""), C6 = c("b","i","q","x"))
> l
   C1 C2 C3 C4 C5 C6
R1  a  b  b  b  a  b
R2  i  i     j     i
R3     q  p  q  p  q
R4  y  x     y  x  x
> 

唯一列的最小组合将是:C1, C4, C5

   C1 C4 C5 
R1  a  b  a  
R2  i  j     
R3     q  p  
R4  y  y  x   
> 

这将给出唯一的对:

   Pair
R1   ab
R2   ij
R3   pq
R4   xy

我估计我可以使用三列或四列(使用Excel已经尝试过两次)来实现对的唯一组合。问题是可能的组合数量很大(如果需要三列,则需要数十亿:2500 * 2500 * 2500,超过三列的数万亿)。因此,我认为comb()expand.grid无法正常工作,因为数据框架太大了。

最后,我认为这个问题可能类似于最短路径类型的优化问题,在合理的计算机时间内解决可能并不容易,但我会非常感谢任何帮助。

0 个答案:

没有答案