У меня есть эта матрица:
quimio = matrix(c(51,33,16,58,29,13,48,42,30,26,38,16),
nrow = 4, ncol = 3)
colnames(quimio) = c("Pouca", "Média", "Alta")
rownames(quimio) = c("Tipo I", "Tipo II", "Tipo III", "Tipo IV")
Что выглядит так:
Pouca Média Alta
Tipo I 51 29 30
Tipo II 33 13 26
Tipo III 16 48 38
Tipo IV 58 42 16
Я хочу превратить ее в таблицу, чтобы все имена строк и столбцов были фиктивными переменными.
Я хотел сделать гистограмму и получил это:
library(tidyverse)
tipo = c("Tipo I", "Tipo II", "Tipo III", "Tipo IV")
tipos = rep(tipo, 3)
quimiotb = as.tibble(quimio)
quimiotb = gather(quimiotb)
quimiotb$tipo = tipos
quimiotb = rename(quimiotb, reacao = key)
quimiotb$reacao = factor(quimiotb$reacao)
quimiotb$tipo = factor(quimiotb$tipo)
Вот что я получаю:
A tibble: 12 x 3
reacao value tipo
<fct> <dbl> <fct>
1 Pouca 51 Tipo I
2 Pouca 33 Tipo II
3 Pouca 16 Tipo III
4 Pouca 58 Tipo IV
5 Média 29 Tipo I
6 Média 13 Tipo II
7 Média 48 Tipo III
8 Média 42 Tipo IV
9 Alta 30 Tipo I
10 Alta 26 Tipo II
11 Alta 38 Tipo III
12 Alta 16 Tipo IV
И хотя это вполне нормально для использованиядля гистограммы с ggplot2
я не могу запустить какую-либо модель на ней - для этого потребуется, чтобы tipo
был разбит на 4 столбца, а reacao
- на 3. Прямо сейчас первая строка этого тиббла читается как «51 пациент с типо»У меня рак был Поука Реаао ".Я думал об использовании spread()
, но не могу найти правильную комбинацию аргументов.Любая помощь будет оценена.
tl; др
Мне нужно привести в порядок quimiotb
и не знаю, как
РЕДАКТИРОВАТЬ: Ожидаемый результат должен быть что-то вроде этого
A tibble: Y x 7
Pouca Media Alta Tipo I Tipo II Tipo III Tipo IV
<fct> <fct> <fct> <fct> <fct> <fct> <fct>
1 0 1 0 0 1 0 0
2 1 0 0 1 0 0 0