【发布时间】:2018-12-09 19:51:35
【问题描述】:
我有这个矩阵:
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 列。现在这个 tibble 的第一行写着“51 名 Tipo I 癌症患者患有 pouca reacao”。我曾考虑过使用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
【问题讨论】:
-
请同时添加至少一小部分您的预期输出。
-
R 很少(如果有的话)需要将因子显式转换为虚拟变量,建模函数会以一种更加经过测试和安全的方式来处理这一点。
-
我只想运行方差分析来评估
tipo是否与reacao相关
标签: r dataframe tidyverse spread