Как заказать таблицу сопряженности на основе порядка данных? - PullRequest
0 голосов
/ 10 марта 2020

Дано

Group    ss
B        male
B        male
B        female
A        male
A        female
X        male

Тогда

tab <- table(res$Group, res$ss)

Я хочу, чтобы столбец группы был в порядке B, A, X, как и в данных. В настоящее время его порядок в алфавитном порядке c, что не то, что я хочу Это то, что я хочу

   MALE  FEMALE
B  5     5
A  5     10
X  10    12

Ответы [ 2 ]

1 голос
/ 10 марта 2020

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

res$Group <- factor(res$Group, levels = c('B', 'A', 'X'))
#If it is based on occurrence in Group column we can use 
#res$Group <- factor(res$Group, levels = unique(res$Group))
table(res$Group, res$ss)
#Or just
#table(res)

#    female male
#  B      1    2
#  A      1    1
#  X      0    1

данные

res <- structure(list(Group = structure(c(2L, 2L, 2L, 1L, 1L, 3L), 
.Label = c("A", "B", "X"), class = "factor"), ss = structure(c(2L, 2L, 1L, 2L, 
1L, 2L), .Label = c("female", "male"), class = "factor")), 
class = "data.frame", row.names = c(NA, -6L))
0 голосов
/ 10 марта 2020

unique возвращает уникальные элементы вектора в порядке их появления. Таблицу можно упорядочить как любую другую структуру, извлекая ее элементы в нужном вам порядке. Поэтому, если вы передадите вывод unique в [,], вы получите таблицу, отсортированную в порядке появления вектора.

tab <- table(res$Group, res$ss)[unique(res$Group),]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...