计算一对值出现在多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+c
, a+d
, a+e...
b+c
, b+d...
我已经使用了plyr
包中的table(apply(df,1,function(x) paste(sort(x), collapse='-')))
和count(df)
,但是输出的频率是a+b
, a+b+c....
b+c
, b+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:K16
input符号。
input这个计数公式
=IF(CODE($K7)>CODE(L$5),SUMPRODUCT(1-N(ISERROR(FIND($K7,str))+N(ISERROR(FIND(L$5,str)))>0)),"")
在L6
并复制它以填充表格L6:V16
的其余部分。