Существует ли функция R для заказа матрицы с использованием двух или более столбцов? - PullRequest
0 голосов
/ 28 января 2020

Я смоделировал данные из 3 столбцов

aa <- rep(seq(0,1,0.05), seq(21,1,-1))
  bb <- NA
  for(i in length(seq(0,1,0.05)):1){
    bb <- c(bb,rep(seq(0,1,0.05),len = i))
  }
  bb <- bb[-1]  
  cc <- 1-(aa+bb)
Dominance <- cbind(aa,bb,cc) 

Тогда в моей задаче строка, содержащая (0,0,1), равна строке, содержащей (1,0,0) и ( 0,1,0). Поэтому я использую этот код ниже, чтобы упорядочить свои данные

for(i in 1:dim(Dominance)[1]){
    Dominance[i,] <- Dominance[i, order(Dominance[i,], decreasing = FALSE)]
}

Проблема в том, что когда я пытаюсь сделать заказ, используя приведенный ниже код, они упорядочивают первый столбец, а не второй.

Dominance[order(Dominance[,1],Dominance[,2],Dominance[,3]),]

Я получил это в результате

  [1,] 0.00 0.00 1.00
  [2,] 0.00 0.00 1.00
  [3,] 0.00 0.00 1.00
  [4,] 0.00 0.05 0.95
         ...
  [59,] 0.00 0.50 0.50
  [60,] 0.00 0.50 0.50
  [61,] 0.05 0.35 0.60
  [62,] 0.05 0.35 0.60
  [63,] 0.05 0.05 0.90
  [64,] 0.05 0.05 0.90

Проблема начинается со строки 61, как только у меня в первом столбце 0,05 и во втором столбце 0,35, но в строке 63 у меня есть то же значение в первом столбце (0,05), но во втором у меня есть небольшое значение, чем 0,35.

Есть идеи?

Я пытался использовать две другие функции, но они получили то же самое результаты.

1 Ответ

1 голос
/ 28 января 2020

При использовании подхода Tidyverse это так же просто, как:

library(tidyverse)
data %>% 
  as_tibble() %>% 
  arrange(aa,bb) %>%
  as.matrix()

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...