es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para crear una nueva columna llamada df$CV_time, podemos utilizar las funciones pmin() y pmax() para obtener los tiempos mínimo y máximo para cada fila basados en la condición.

    Aquí está el código:

    df$CV_time <- with(df, pmin(pmax(MI_time, Stroke_time, na.rm = TRUE), Arrythmia_time, na.rm = TRUE))
    

    La función pmin() devuelve el valor mínimo para cada fila entre el máximo de MI_time y Stroke_time y Arrhythmia_time, mientras que la función pmax() devuelve el valor máximo para cada fila entre MI_time y Stroke_time. El argumento na.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.

Comments are closed.