Таблица частот по строкам в R - PullRequest
0 голосов
/ 06 ноября 2018

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

Я хочу создать таблицу частот номинальных данных, разделенных по строкам Например, в этой матрице:

x <- matrix(nrow = 3, ncol = 3, 
  c("A","B","B",
  "C","C","B",
 "D","A","B"
  ))

Использование функции table (x) дает мне:

A B C D
2 4 2 1

Но я хочу получить отдельные счетчики для каждой строки, где полученная таблица:

A B C D
1 2 0 0

0 1 1 0

1 1 0 1

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

1 Ответ

0 голосов
/ 06 ноября 2018

Мы можем использовать apply с MARGIN=1 для циклического перемещения по столбцам, конвертировать в factor с levels, указанным в качестве unique элементов 'x', и получить table

un1 <- sort(unique(c(x)))
t(apply(x, 2, function(x) table(factor(x, levels = un1))))
#     A B C D
#[1,] 1 2 0 0
#[2,] 0 1 2 0
#[3,] 1 1 0 1

Или использовать векторизованный подход

table(c(col(x)), c(x))
#    A B C D
#  1 1 2 0 0
#  2 0 1 2 0
#  3 1 1 0 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...