📁 Directorio de trabajo en R

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")

📂 Importación de archivos

1. Usando la interfaz gráfica

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.

2. Vía código

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)

📦 Instalación de paquetes

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

🛠 Preparación de los datos con 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

🎯 Agrupación basada en la expresión de un gen

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", ]

📊 Análisis de Supervivencia

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)

🎨 Gráfica personalizada con mas parámetros

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.