О сортировке данных в R - PullRequest
       3

О сортировке данных в R

0 голосов
/ 09 октября 2019

Я использую функцию table() для сравнения двух столбцов, таких как

table(bankMini$age, bankMini$job)

bankMini$age является числовым bankMini$job является категориальным (фактор) `

Когда я использую его,это дает результат, подобный этому

enter image description here

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

enter image description here

Возможно ли это? Спасибо

1 Ответ

0 голосов
/ 09 октября 2019

Я думаю, что это то, что вы описываете:

# Make some toy data
set.seed(1)
n <- 1000
age <- rnbinom(n = n, size = 25, prob = 0.5)
job <- sample(LETTERS[1:5], size = n, replace = TRUE)


tab <- table(age, job)
head(tab)
#    job
#age  A B C D E
#  7  0 0 0 0 1
#  8  0 0 0 0 1
#  9  0 0 0 2 1
#  10 1 0 1 1 0
#  11 2 1 1 0 1
#  12 2 4 0 3 1    

# Sort each column indiviually, and get corresponding groups in the rows
out <- sapply(1:ncol(tab), 
              function(i) rownames(tab)[order(tab[, i], decreasing = TRUE)])
colnames(out) <- colnames(tab)
head(out)
#     A    B    C    D    E   
#[1,] "24" "28" "19" "23" "23"
#[2,] "20" "18" "22" "27" "24"
#[3,] "27" "21" "18" "17" "22"
#[4,] "18" "17" "31" "25" "26"
#[5,] "25" "26" "27" "29" "21"
#[6,] "29" "19" "16" "18" "25"

# If you need it to be numeric
class(out) <- "numeric"
head(out)
#      A  B  C  D  E
#[1,] 24 28 19 23 23
#[2,] 20 18 22 27 24
#[3,] 27 21 18 17 22
#[4,] 18 17 31 25 26
#[5,] 25 26 27 29 21
#[6,] 29 19 16 18 25

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

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