计算一对值出现在多less行中

我的数据框看起来像这样:

Index V1 v2 v3 v4 v5 v6 1 abcdef 2 bcde 3 abcfg 4 acfdg 5 bcdghi . . . . . . . . . . . . . . 

我需要遍历数据框中的每一行,并挑选出现在一起的对,并对它们进行计数。 例如a和b出现在行索引1和3中,所以count = 2。

dataframe有6列,不包括索引和554行。 每行中有6个variables可能有11个。

第一步是做一对和一对。

然后做所有的组合。 例如。 a+ca+da+e... b+cb+d...

我已经使用了plyr包中的table(apply(df,1,function(x) paste(sort(x), collapse='-')))count(df) ,但是输出的频率是a+ba+b+c.... b+cb+c+d

我需要freq的所有对。 所以a+b = (freq of a+b) + (freq of a+b+c) + (freq of a+b+c+d)等等

在Excel中,我试过了COUNTIF 。 这样COUNTIF(column1,a,column2,b) ,但a和b并不总是在第1和第2列。

也尝试了COUNTIF(df,a,df,b)但是那给了我一个巨大的数字。

可以在r或excel中完成。 虽然我认为在R的速度会更快

使用示例的随机数据,我们假设dataframe在C5:H558

定义一个名字str

 =$C$5:$C$558&$D$5:$D$558&$E$5:$E$558&$F$5:$F$558&$G$5:$G$558&$H$5:$H$558 

L5:V5以及K6:K16input符号。

input这个计数公式

 =IF(CODE($K7)>CODE(L$5),SUMPRODUCT(1-N(ISERROR(FIND($K7,str))+N(ISERROR(FIND(L$5,str)))>0)),"") 

L6并复制它以填充表格L6:V16的其余部分。

在这里输入图像说明

Interesting Posts