library(tidyverse)
library(stringr)
df <- read_csv("queilits.csv")
Parsed with column specification:
cols(
.default = col_character(),
Fototipo = col_integer()
)
See spec(...) for full column specifications.
Primero cambio los si-no a presente/ausente
df <- df %>% # creo un nuevo df sobre el df original
select(`Sequedad Labial`:`Presencia de Queilitis Actinica`, `Nombre de Pcte.`, `Edad Pcte.`, `Sexo Pcte.` ) %>% # selecciono solo las columnas que voy a utilizar
gather(`Sequedad Labial`:`Atrofia de labio`,
key = "Signo", value = "Presencia o ausencia") # ahora reuno las columnas de Sequedad a Atrofia, las junto en una columa (key=) y los valores los agrego a value. Ahora me quedan 3 columnas
glimpse(df)
Observations: 1,356
Variables: 6
$ Presencia de Queilitis Actinica <chr> "Presente", "Presente", "Ausente", "Presente", "Ausente", "Presente", "Presente", "Au...
$ Nombre de Pcte. <chr> "Paillalef Millahual Mario Esteban", "Guala Carrasco Pedro", "Saldivia Barria Ana", "...
$ Edad Pcte. <chr> "35", "59", "66", "52 años", "26", "67 años", "62", "72", "63", "55 años", "50", "53"...
$ Sexo Pcte. <chr> "Masculino", "Masculino", "Femenino", "Masculino", "Masculino", "Masculino", "Masculi...
$ Signo <chr> "Sequedad Labial", "Sequedad Labial", "Sequedad Labial", "Sequedad Labial", "Sequedad...
$ Presencia o ausencia <chr> "Presente", "Presente", "Ausente", "Presente", "Presente", "Presente", "Presente", "A...
Voy a hacer una tabla para ver
table(df$Signo, df$`Presencia o ausencia`)
ausente Ausente No NO presente Presente Si SI
Ardor o Prurito 0 107 0 0 0 6 0 0
Atrofia de labio 0 0 102 0 0 0 0 11
Edema 0 98 0 0 0 15 0 0
Eritema 28 0 0 0 85 0 0 0
Esfumación del Borde Bermellón del labio 0 0 60 0 0 0 53 0
Línea Muco-Cutánea 0 31 0 0 0 69 0 0
Pliegues labiales marcados 0 0 0 57 0 0 56 0
Presencia de Costra 0 104 0 0 0 9 0 0
Presencia de lesión Escamosa 0 105 0 0 0 8 0 0
Presencia de Mancha o Placa Blanca 0 0 0 74 0 0 39 0
Sequedad Labial 0 21 0 0 0 92 0 0
Ulceración/fisuración del Labio 0 85 0 0 28 0 0 0
OK, todo siempre puede ser peor. No solo hay “ausente” y “presente”, sino que también “Ausente”, “Presente” y por supuesto los “si” y “no”
Paso todo a minúsculas
df$`Presencia o ausencia` <- str_to_lower(df$`Presencia o ausencia`)
Ahora quedan cuatro categorías. Paso todas las no a ausente y si a presente
df$`Presencia o ausencia` <- str_replace(df$`Presencia o ausencia`,
"no",
"ausente")
df$`Presencia o ausencia` <- str_replace(df$`Presencia o ausencia`,
"si",
"presente")
# cambio la edad, le saco "años"
df$`Edad Pcte.` <- str_replace(df$`Edad Pcte.`,
" años",
"") # que locura el ingreso de datos...
df$`Edad Pcte.` <- as.numeric(df$`Edad Pcte.`) #cambio de chr a num
Cambio los presente o ausente de queilitis a con queilits y sin queilitis para no confundirme
df$`Presencia de Queilitis Actinica` <- str_replace(df$`Presencia de Queilitis Actinica`,
"Presente",
"con queilitis")
df$`Presencia de Queilitis Actinica` <- str_replace(df$`Presencia de Queilitis Actinica`,
"Ausente",
"sin queilitis")
glimpse(df)
Observations: 1,356
Variables: 6
$ Presencia de Queilitis Actinica <chr> "con queilitis", "con queilitis", "sin queilitis", "con queilitis", "sin queilitis", ...
$ Nombre de Pcte. <chr> "Paillalef Millahual Mario Esteban", "Guala Carrasco Pedro", "Saldivia Barria Ana", "...
$ Edad Pcte. <dbl> 35, 59, 66, 52, 26, 67, 62, 72, 63, 55, 50, 53, 45, 45, 56, 68, 38, 52, 54, 24, 36, 3...
$ Sexo Pcte. <chr> "Masculino", "Masculino", "Femenino", "Masculino", "Masculino", "Masculino", "Masculi...
$ Signo <chr> "Sequedad Labial", "Sequedad Labial", "Sequedad Labial", "Sequedad Labial", "Sequedad...
$ Presencia o ausencia <chr> "presente", "presente", "ausente", "presente", "presente", "presente", "presente", "a...
Vamos a ver ahora
table(df$Signo, df$`Presencia o ausencia`)
Ahora si…
Otro estilo de tabla:
Vamos a ver si se puede graficar
df %>% # tomo el df
filter(`Presencia o ausencia` == "presente") %>% #filtro
ggplot(aes(x = Signo)) + # grafico, el eje x es signo
geom_bar() # en forma de barras
Bien, pero sale todo junto, cambio los ejes
df %>%
filter(`Presencia o ausencia` == "presente") %>%
ggplot(aes(x = Signo)) +
geom_bar() +
coord_flip() # con esto roto los ejes
todo muy bien, pero son variables nominales, perfectamente las puedo ordenar de mayor a menor sin perder información
Necesito 1. hacer una tabla 2. ordernarla, y 3 graficarla
df %>%
filter(`Presencia o ausencia` == "presente") %>%
ggplot(aes(x = Signo)) +
geom_bar() +
coord_flip()
Tareas:
Ordenar por recuento de categoria Hacer facet por si tiene o no quelitis hacer análisis Mantel-Haenzel
table(df$Signo, df$`Presencia o ausencia`, df$`Presencia de Queilitis Actinica`)
, , = con queilitis
ausente presente
Ardor o Prurito 33 4
Atrofia de labio 26 11
Edema 25 12
Eritema 2 35
Esfumación del Borde Bermellón del labio 5 32
Línea Muco-Cutánea 28 2
Pliegues labiales marcados 6 31
Presencia de Costra 30 7
Presencia de lesión Escamosa 30 7
Presencia de Mancha o Placa Blanca 11 26
Sequedad Labial 3 34
Ulceración/fisuración del Labio 18 19
, , = sin queilitis
ausente presente
Ardor o Prurito 74 2
Atrofia de labio 76 0
Edema 73 3
Eritema 26 50
Esfumación del Borde Bermellón del labio 55 21
Línea Muco-Cutánea 3 67
Pliegues labiales marcados 51 25
Presencia de Costra 74 2
Presencia de lesión Escamosa 75 1
Presencia de Mancha o Placa Blanca 63 13
Sequedad Labial 18 58
Ulceración/fisuración del Labio 67 9
paraMantelHaenzel <- table(df$Signo, df$`Presencia o ausencia`, df$`Presencia de Queilitis Actinica`)
mosaicplot(table(df$Signo, df$`Presencia o ausencia`, df$`Presencia de Queilitis Actinica`),
shade = T)
mantelhaen.test(x = df$Signo,
y = df$`Presencia o ausencia`,
z = df$`Presencia de Queilitis Actinica`,
alternative = c("two.sided"),
correct = T,
exact = F,
conf.level = 0.95)
Cochran-Mantel-Haenszel test
data: df$Signo and df$`Presencia o ausencia` and df$`Presencia de Queilitis Actinica`
Cochran-Mantel-Haenszel M^2 = 458.48, df = 11, p-value < 2.2e-16