自定义功能在谷歌电子表格:一个人之间的分歧和其他组
Custom function in Google Spreadsheet: disagreement between one person and rest of the group
我需要计算一项调查中被调查者之间的分歧。
第一步是计算两个被调查者之间的分歧
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()中,用于调试目的。
相关文章:
- 在Jquery调用之间添加其他函数
- Javascript创建函数,以便在其他函数之间共享变量
- 如何在 javascript 中使用正则表达式在其他两个字符串之间找到一个字符串
- document.write和document.innerHTML以及其他javascript问题之间有什么区别
- 在jsson图像滑块之间切换(显示一个,隐藏其他)
- D3 - 在两个不与其他对象相交的对象之间绘制一条线
- 在两个或多个 UL 列表之间切换,如果单击一个列表,则其他列表会自动以初始状态返回,就像从未单击过一样
- 想要在登录页面和其他页面应用程序 angularjs 之间分开
- 获取父对象并通过介于两者之间的窗体传递给其他方法
- Reg ex 表示特定字符之后和其他字符之间的任何内容
- “我当前的地理位置”和其他坐标之间的计算
- 是否可以使用 JQuery 或其他方法在两个浏览器窗口之间拖放一些内容
- 如何在其他重叠的数字范围之间找到可用的数字范围
- 如何附加列表项<李>从无序列表<ul>其他四个未排序列表之间
- 替换其他两个符号之间的所有符号
- 除了 JavaScript 之外,是否有任何其他语言在大括号开始位置(同一行和下一行)之间有区别
- Jquery-在共享相同类名的其他元素之间选择一个元素(单击时)
- 获取MongoDB中其他两个条目之间的所有条目
- 自定义功能在谷歌电子表格:一个人之间的分歧和其他组
- RegEx查找一个字符的所有出现,而不是在两个其他字符之间