自定义功能在谷歌电子表格:一个人之间的分歧和其他组

Custom function in Google Spreadsheet: disagreement between one person and rest of the group

本文关键字:其他 之间 一个人 功能 谷歌 电子表格 自定义      更新时间:2023-09-26

我需要计算一项调查中被调查者之间的分歧。

第一步是计算两个被调查者之间的分歧

function disagree(DISAG, otherMember) { 
  return Math.abs(DISAG.localeCompare(otherMember));
}

第二步是计算一个被调查者和所有其他人之间的平均分歧。

要手动切换,我必须这样做:

1/(N-1) * (disagree(DISAG, otherMember) + disagree(DISAG, othermember2)) etc
为了尝试一次完成,我编写了以下函数,作为测试
function TEST(DISAG) { 
 var otherMembers = ["No problem", "Can improve", "Can improve"]
 var indivDisag = []
 var sum = 0     
 for (var i in otherMembers) { 
  indivDisag[i] = DISAG.localeCompare(otherMembers[i])
 };
 for (var i in indivDisag) { 
  sum +=  Math.abs(indivDisag[i]); 
 };
  return sum / indivDisag.length
}

编辑:我最初的问题是由于打字错误。现在我在电子表格中得到一个返回的数字,但是无论DISAG的值是多少,这个数字总是相同的。一定是我在编写函数时没有正确地解释数学。

数学是这样的:

d(i,j) = disagreement of an individual (i) with another (j).
if i == j, then d(i,j) = 0. if i != j then d(i,j) = 1
di = average agreement of one person with the rest of the group.
di = 1/(N-1) * SUM( d(i,j)*f(j) )
where N = number of people who answered the survey
and f(j) is a function of the different individual disagreements.

用简单的英语来说:一个人的平均同意是她个人同意的总和除以小组中可能的配对数(N-1)的结果。

谢谢你的帮助

几点

我不链接谷歌脚本知道localCompare()是什么。所以如果你修复了这个,它会认为你给一个对象附加了一个函数。

调试器不会在你的函数上运行,因为它期望传递一个变量。

function TEST(DISAG) { 

当你运行调试器时,它不会知道"DISAG"指的是什么。所以当它在

中遇到它时
indivDisag = DISAG.localCompare(otherMembers[i])

它不知道该做什么。

您可以将它作为一个变量包含在函数TEST()中,用于调试目的。

相关文章: