我想在Google电子表格中计算 不同列的相似度百分比 。 但是......我不知道该怎么做。
让我解释一下我想说的话,以及针对哪个问题'我试图找到一个(简单的)解决方案。
在Google电子表格中,我有两张。
在第一张表上有一张表格,其中包含几个(即将出现的)政治提案以及一些政党如何投票赞成这些提案。每个投票值(是或否)都将手动添加。
在第二张表上有一个块矩阵,其中两个政党的百分比投票赞成相同的提案。在这张表中,我从第一张表中算出了每一方与其他方相比的相似之处。或者: X中有多少次投票两方完全相同?
一些例子:
N.B。 ' 5'在X / 5中,目前最多有五个提案,但在不久的将来,这个数量会增加到更大的数量
您可以在此处查看此电子表格的示例:https://docs.google.com/spreadsheets/d/1rVaWN_FEV0qOk9kCp-SON4r-THsHZMqA5JQb9fNcEnM/edit?usp=sharing(如上所述,使用两张表)
现在,我手动计算相似度的百分比(这意味着:手动),这对我来说似乎不是很有效,特别是当政治提案的数量增加时,甚至更多现在已经很费时间了。
我认为使用公式可以更智能,更有效地计算相似度的百分比,所以当我必须广告一些新的投票结果时,块矩阵中自动相似的百分比将会自动调整。
但......怎么做?
公式,解决方案,想法和/或建议(即使是关于如何在MS Excel中执行此操作)非常感谢! : - )
答案 0 :(得分:1)
这可以通过矩阵乘法来完成。
这是我使用的公式:
=ArrayFormula(
(SUMPRODUCT(
MMULT(
(IF('Overview of votes by party'!$B$2:$E$2=B$2;'Overview of votes by party'!$B$3:$E$7)="Yes")*1;
TRANSPOSE(($B$2:$E$2>0)*1)
)*
MMULT(
(IF('Overview of votes by party'!$B$2:$E$2=$A3;'Overview of votes by party'!$B$3:$E$7)="Yes")*1;
TRANSPOSE(($B$2:$E$2>0)*1))
)+
SUMPRODUCT(
MMULT(
(IF('Overview of votes by party'!$B$2:$E$2=B$2;'Overview of votes by party'!$B$3:$E$7)="No")*1;
TRANSPOSE(($B$2:$E$2>0)*1)
)*
MMULT(
(IF('Overview of votes by party'!$B$2:$E$2=$A3;'Overview of votes by party'!$B$3:$E$7)="No")*1;
TRANSPOSE(($B$2:$E$2>0)*1)))
)/
(
COUNTIF('Overview of votes by party'!B:B;"Yes")+
COUNTIF('Overview of votes by party'!B:B;"No")
)
)
基本上这个过程是:
取两个比较方的值矩阵。即:
IF('Overview of votes by party'!$B$2:$E$2=B$2;'Overview of votes by party'!$B$3:$E$7)="Yes")*1
和
IF('Overview of votes by party'!$B$2:$E$2=$A3;'Overview of votes by party'!$B$3:$E$7)="Yes")*1
两个矩阵中每行的总和,创建两个新矩阵
(每个矩阵的维数为1 x #Proposals)。这是通过将每个矩阵乘以由具有与#proposals相同行数的所有1的单个列矩阵来完成的。即:
MMULT(
(IF(..PartyA..)*1;
TRANSPOSE(($B$2:$E$2>0)*1)
)
和
MMULT(
(IF(..PartyB..)*1;
TRANSPOSE(($B$2:$E$2>0)*1)
)
将步骤2中的两个矩阵相乘,创建最终矩阵
使用SUMPRODUCT
完成1-4" No"和"是",将两个总和加在一起
将第5步中的总和除以提案总数:
(
COUNTIF('Overview of votes by party'!B:B;"Yes")+
COUNTIF('Overview of votes by party'!B:B;"No")
)
你可以看到这个here。
答案 1 :(得分:0)