我将数据集作为可重复的数字:
02 02 25 27 32 47,
45 55 11 44 65 47,
12 02 56 48 65 25,
45 56 11 44 76 54,
可以是数组也可以是对象都没关系,但我需要做的是找到列中出现频率最高的值。所以,可以说,在我的示例数据中,第一列应该是 45,第二列是 02,第三列是 11,依此类推。
找出列中最可重复值的最简单方法是什么。它可以是 javascript(首选)或任何其他后端编程语言。
我将数据集作为可重复的数字:
02 02 25 27 32 47,
45 55 11 44 65 47,
12 02 56 48 65 25,
45 56 11 44 76 54,
可以是数组也可以是对象都没关系,但我需要做的是找到列中出现频率最高的值。所以,可以说,在我的示例数据中,第一列应该是 45,第二列是 02,第三列是 11,依此类推。
找出列中最可重复值的最简单方法是什么。它可以是 javascript(首选)或任何其他后端编程语言。
对它们进行排序,然后找到所有邻居计数相同的数字,然后对计数进行排序。 计算 JavaScript 数组元素的出现次数
您可以使用一个对象来累积数组中值的计数,然后选择具有最大计数的值:
function mostFrequentValueOf( arr ) {
var counts = {};
for( var i=0; i<arr.length; ++i ) {
var val = arr[i];
if( counts[val] )
counts[val]++;
else
counts[val]=1;
}
var maxcnt=0, maxval;
for( var val in counts ) {
var cnt = counts[val];
if( cnt > maxcnt ) {
maxcnt = cnt;
maxval = val;
}
}
return maxval;
}
顺便说一句,这也适用于字符串数组值。
如果您的数据组织为列数组
var columns = [ [02,45,12,45], [02,55,02,56], [25,11,56,11], [27,44,48,44], [32,65,65,76], [47,47,25,54] ];
您可以直接调用该函数:mostFrequentValueOf(columns[0])
如果您的数据组织为行数组
var rows = [ [02,02,25,27,32,47], [45,55,11,44,65,47], [12,02,56,48,65,25], [45,56,11,44,76,54] ];
我认为你应该重新组织数据
var column_idx=0, column=[];
for( var i=0; i<rows.length; ++i )
column.push( rows[i][column_idx] );
然后使用相同的功能mostFrequentValueOf(column)
这是在 JSfiddle:http: //jsfiddle.net/V4TRc