У меня есть такая матрица:
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 пациент с типо у меня рак имел pouca reacao ". Я думал об использовании spread()
, но не могу найти правильную комбинацию аргументов. Любая помощь будет оценена по достоинству.
tl;dr
Мне нужно привести в порядок 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
tipo
сreacao
- person Pedro Cavalcante   schedule 09.12.2018