R necesita saber en qué carpeta buscar y guardar archivos. Esta carpeta se llama directorio de trabajo.
# Ver el directorio de trabajo actual
getwd()
## [1] "D:/repos@elopezhuerta/Taller-Introduccion_R/Sesion5"
# Cambiar el directorio de trabajo (ajusta a tu ruta)
setwd("D:/Taller_R")
En RStudio: - Ve a “Import Dataset” > “From Text (base)” - Busca
el archivo (evita acentos, espacios y guiones en el nombre) - Asegúrate
de seleccionar Header = Yes
si el archivo tiene
encabezados.
Es muy recomendable familiarizarse con este entorno si en algún momento se desea trabajar con datos que requieren mayor capacidad de cómputo, ya que los equipos con mayor rendimiento suelen carecer de interfaz gráfica y todo se gestiona mediante línea de comandos.
Existen dos formas de indicar una ruta:
# Establece el directorio y revisa archivos disponibles
setwd("D:/Taller_R/Sesion5")
list.files()
## [1] "tabla_ejercicio.csv"
# Opción 1: Ruta relativa. Estando posicionado en el directorio
tabla_ejercicio <- read.csv("tabla_ejercicio.csv", header = T, row.names = 1)
# Opción 2: Ruta completa (Recomendado)
tabla_ejercicio <- read.csv("D:/Taller_R/Sesion5/tabla_ejercicio.csv", header = T, row.names = 1)
Es recomendable instalar versiones específicas para reproducibilidad.
# Remover `#` si es la primera vez que se instala
#install.packages("remotes", repos = "https://cloud.r-project.org")
#remotes::install_version("survival", version = "3.5.5")
#remotes::install_version("survminer", version = "0.5.0")
Luego carga las librerías:
library(survival)
library(survminer)
## Warning: package 'survminer' was built under R version 4.3.3
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.3.3
## Loading required package: ggpubr
##
## Attaching package: 'survminer'
## The following object is masked from 'package:survival':
##
## myeloma
ifelse()
Con un inspeccion rapida con head
podemos notar que el
status del paciente (Event) no está en el formato adecuado
# Revisar los primeros registros
head(tabla_ejercicio)
## Sample Months Event TP53
## 1 MB-0000 140.50000 0:LIVING 0.3481
## 2 MB-0002 84.63333 0:LIVING -0.0176
## 3 MB-0005 163.70000 1:DECEASED 0.5126
## 4 MB-0006 164.93333 0:LIVING 1.6748
## 5 MB-0008 41.36667 1:DECEASED 0.3461
## 6 MB-0010 7.80000 1:DECEASED -1.9502
# Re-codificar columna 'Event': transformar "0:LIVING" en 0 y todo lo demás en 1
tabla_ejercicio$Event <- ifelse(tabla_ejercicio$Event == "0:LIVING", 0, 1)
head(tabla_ejercicio)
## Sample Months Event TP53
## 1 MB-0000 140.50000 0 0.3481
## 2 MB-0002 84.63333 0 -0.0176
## 3 MB-0005 163.70000 1 0.5126
## 4 MB-0006 164.93333 0 1.6748
## 5 MB-0008 41.36667 1 0.3461
## 6 MB-0010 7.80000 1 -1.9502
Debemos crear una columna que indique como se van a agrupar nuestras muestras. Queremos clasificar las muestras en función de la expresión de TP53.
# Averiguar el rango de expresión
quantile(tabla_ejercicio$TP53)
## 0% 25% 50% 75% 100%
## -2.49680 -0.65875 -0.02240 0.64385 4.30600
Basado en el rango de los datos, proponemos 1 como limite para catalogar muestras como “High” y -1 para catalogar muestras como “Low”
# Clasificación en 3 grupos usando ifelse anidados
# Colocar el agrupamiento en una nueva columna dentro del dataframe
tabla_ejercicio$Group <- ifelse(tabla_ejercicio$TP53 > 1, "High",
ifelse(tabla_ejercicio$TP53 < -1, "Low", "Medium"))
# Ver número de muestras por grupo
table(tabla_ejercicio$Group)
##
## High Low Medium
## 308 308 1364
Nota: Se recomienda eliminar el grupo “Medium” para contrastar sólo casos extremos:
surv_ready <- tabla_ejercicio[tabla_ejercicio$Group != "Medium", ]
Debemos indicar las columnas donde viene el tiempo (Months), status (vivo o muerto) (Event) y la agrupación de las muestras (Group)
# Crear modelo de supervivencia
km.results <- survfit(Surv(Months, Event) ~ Group, data = surv_ready)
# Grafica sencilla, solo necesita 2 parametros.
ggsurvplot(fit = km.results, data = surv_ready)
ggsurvplot(fit = km.results, data = surv_ready,
pval = TRUE,
# Tabla especificando pacientes remanentes en el estudio y su respectivo status
risk.table = "nrisk_cumevents",
break.x.by = 50)
Esto mostrará la curva de supervivencia por grupo, el valor de p y una tabla con el número de pacientes remanentes en cada tiempo.