Создать и построить таблицу, которая сохраняет порядок фактора - PullRequest
0 голосов
/ 25 декабря 2018

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

Код:

library(plyr)
set.seed(1234)

# create a random vector of different categories 
number_of_categories <- 11
probability_of_each_category <- c(0.1,0.05, 0.05,0.08, 0.01, 
                                  0.1, 0.2, 0.3, 0.01, 0.02,0.08)
number_of_samples <- 1000
x <- sample( LETTERS[1:number_of_categories], 
            number_of_samples, 
            replace=TRUE,
            prob=probability_of_each_category)
# just a vector of zeros and ones
outcome <- rbinom(number_of_samples, 1, 0.4)
# I want x to be 1,2,...,11 so that it demonstrates the issue when
# creating the table
x <- mapvalues(x, 
          c(LETTERS[1:number_of_categories]),
          seq(1:number_of_categories))
# the table shows the ordering
prop.table(table(x))
plot(table(x, outcome))

Таблица:

> prop.table(table(x))
x
    1    10    11     2     3     4     5     6     7     8     9 
0.105 0.023 0.078 0.044 0.069 0.083 0.018 0.097 0.195 0.281 0.007

Участок:

image1

Я хотел бы получить сюжети таблица в порядке

    1     3     4     5     ...   10      11

Вместо

    1    10    11     2     3     4     5     6     7     8     9 

Ответы [ 2 ]

0 голосов
/ 25 декабря 2018

Решить эту проблему несложно - отформатировать числа, чтобы включить ведущий ноль во время mapvalues(), используя sprintf().

x <- mapvalues(x, 
               c(LETTERS[1:number_of_categories]),
               sprintf("%02d",seq(1:number_of_categories)))
# the table shows the ordering
prop.table(table(x))
plot(table(x, outcome))

... и вывод:

> prop.table(table(x))
x
   01    02    03    04    05    06    07    08    09    10    11 
0.104 0.067 0.038 0.073 0.019 0.112 0.191 0.291 0.011 0.019 0.075 

enter image description here

0 голосов
/ 25 декабря 2018

Вы можете либо преобразовать x в числовое значение, прежде чем вводить его в table

plot(table(as.numeric(x), outcome))

, или упорядочить строки таблицы по as.numeric из имен строк

t <- table(x, outcome)
t <- t[order(as.numeric(rownames(t))),]

plot(t)

enter image description here

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