按特定行排序矩阵或数据框

时间:2016-06-12 23:46:17

标签: r

我想按照它的第二行对矩阵或数据框进行排序。 我找到了办法。

tt<-c(3,2,3,5,3,5,5,4,3,1,5,2,1,5,4,1,3,5,3,3)
ff<-matrix(tt,nrow=5)
gg<-t(ff)
nn<-gg[order(gg[,2],decreasing = T),]
ff<-t(nn)
ff

任何替代或建议?

1 个答案:

答案 0 :(得分:4)

您不必转置矩阵以便按第二行对矩阵进行排序。根据列索引的第二行指定顺序也应该有效。

// Finds maximum value across entire array
var maxArrSingle = function(arr) {
  return arr.reduce(
    function(acc,val){
      return Math.max(acc,val);
    },
    -Infinity);
}

// Find indices where array is at max
var maxArrIndexes = function(arr) {
  var max = maxArrSingle(arr);
  return arr.reduce(function(acc,val,idx) {
    if (val >= max) acc.push(idx);
    return acc;
  },[]);
}

// demos
var arr = [10, 67, 100, 100];
console.log(maxArrIndexes(arr));

var arr = [-10, -67, -100, -100, -4000, -9, -90, -90 ];
console.log(maxArrIndexes(arr));

var arr = [];
console.log(maxArrIndexes(arr));

var arr = [0];
console.log(maxArrIndexes(arr));

var arr = [0,0];
console.log(maxArrIndexes(arr));