Seleccione el número óptimo en base a las condiciones.
Esta es mi base de datos mínima:
df=structure(list(ID = c(3942504L, 3199413L, 1864266L, 4037617L,
2030477L, 1342330L, 5434070L, 3200378L, 4810153L, 4886225L),
MI_TIME = c(1101L, 396L, 1140L, 417L, 642L, 1226L, 1189L,
484L, 766L, 527L), MI_Status = c(0L, 0L, 1L, 0L, 0L, 0L,
0L, 0L, 1L, 0L), Stroke_status = c(1L, 0L, 1L, 0L, 0L, 0L,
0L, 1L, 1L, 0L), Stroke_time = c(1101L, 396L, 1140L, 417L,
642L, 1226L, 1189L, 484L, 766L, 527L), Arrhythmia_status = c(NA,
NA, TRUE, NA, NA, TRUE, NA, NA, TRUE, NA), Arrythmia_time = c(1101L,
356L, 1122L, 7L, 644L, 126L, 118L, 84L, 76L, 5237L)), row.names = c(NA,
10L), class = "data.frame")
Como puedes ver, tengo principalmente 2 tipos de variables “status” y “time”.
Estoy preparando mi base de datos para un análisis de supervivencia, y “time” es el tiempo hasta el evento en días.
Pero el problema surge cuando intento crear una variable llamada “any cardiovascular outcome” (df$CV), que he definido de la siguiente manera:
df$CV = NA
df$CV <- with(df, ifelse(MI_Status=='1' | Stroke_status=='1' | Arrhythmia_status=='TRUE' ,'1', '0'))
df$CV = as.factor(df$CV)
El problema que tengo es seleccionar el tiempo óptimo hasta el evento. Ahora tengo una nueva variable llamada df$CV, pero 3 variables diferentes “_time”. Por lo tanto, me gustaría crear una nueva columna llamada df$CV_time, donde el tiempo sea el tiempo del primer evento. Sin embargo, hay una pequeña dificultad en este problema y pongo un ejemplo:
Si tenemos un sujeto con MI_status=1, Arrythmia_status=NA, stroke_status=1 y MI_time=200, Arrythmia_time=100, stroke_time=220 –> el tiempo correcto para df$CV sería 200, ya que es el tiempo del evento más temprano.
Sin embargo, en un caso donde MI_status=0, Arrythmia_status=NA, stroke_status=0 y MI_time=200, Arrythmia_time=100, stroke_time=220 –> el tiempo correcto para df$CV sería 220, ya que es el tiempo más largo de seguimiento, que es de 220 días.
¿Cómo puedo seleccionar el número óptimo para df$CV basado en estas condiciones?
davy.ai
Para crear una nueva columna llamada
df$CV_time
, podemos utilizar las funcionespmin()
ypmax()
para obtener los tiempos mínimo y máximo para cada fila basados en la condición.Aquí está el código:
La función
pmin()
devuelve el valor mínimo para cada fila entre el máximo deMI_time
yStroke_time
yArrhythmia_time
, mientras que la funciónpmax()
devuelve el valor máximo para cada fila entreMI_time
yStroke_time
. El argumentona.rm = TRUE
se utiliza para ignorar los valores faltantes.De esta manera, podemos seleccionar el tiempo óptimo para
df$CV
basado en las condiciones proporcionadas.