-2

我将数据集作为可重复的数字:

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(首选)或任何其他后端编程语言。

4

2 回答 2

0

对它们进行排序,然后找到所有邻居计数相同的数字,然后对计数进行排序。 计算 JavaScript 数组元素的出现次数

于 2013-10-20T09:21:11.337 回答
0

您可以使用一个对象来累积数组中值的计数,然后选择具有最大计数的值:

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

于 2013-10-20T10:00:15.080 回答