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.

¿Por qué difieren los resultados para left_join() y right_join() de dplyr utilizando estos dos dataframes?

Estoy aprendiendo cómo utilizar las funciones de ‘join’ de dplyr en R haciendo los ejercicios de este curso: https://github.com/uclouvain-cbio/WSBIM1207 y me he quedado atascado en el problema descrito a continuación.

Primero, descarga los dataframes de ejemplo utilizados para esta pregunta:

BiocManager::install("UCLouvain-CBIO/rWSBIM1207")

Carga el paquete:

library(rWSBIM1207)

Luego, en R/RStudio, carga los archivos dataframe, ‘clinical2’ y ‘expression’, escribiendo:

data(clinical2)
data(expression)

La tarea consiste, en primer lugar, en:
“Unir las tablas de expresión y clinical2 por la referencia del paciente, utilizando las funciones left_join y right_join”.
Hice esto de la siguiente manera:

left_join(expression, clinical2,
          by = c("patient" = "patientID"))
right_join(expression, clinical2,
          by = c("patient" = "patientID"))

La segunda tarea es explicar por qué los resultados son diferentes. Descubrí que hay 3 filas más en la salida del right_join en comparación con la salida del left_join. Esto me parece extraño porque ‘clinical2’ tiene 516 filas, mientras que ‘expression’ tiene 570 filas. Las 3 filas extra que están presentes en la salida del right_join tienen en común que contienen múltiples valores NA, que presumiblemente representan pacientes encontrados en ‘clinical2’ pero no en ‘expression’. Realmente no entiendo lo que está sucediendo aquí y agradecería cualquier ayuda.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Funciones de unión de dplyr en R – left_join y right_join

    Estaba usando el paquete ‘rWSBIM1207’ y practicando los ejercicios del siguiente curso: https://github.com/uclouvain-cbio/WSBIM1207. Me quedé atascado en una pregunta que requería unir dos dataframes ‘expression’ y ‘clinical2’ utilizando la referencia del paciente como clave común utilizando las funciones left_join y right_join.

    Para realizar esta tarea, primero descargué los dataframes de ejemplo y luego los cargué en R/RStudio utilizando los siguientes comandos:

    BiocManager::install("UCLouvain-CBIO/rWSBIM1207")
    library(rWSBIM1207)
    data(clinical2)
    data(expression)
    

    A continuación, utilicé el siguiente código para realizar las operaciones left_join y right_join:

    left_join(expression, clinical2, by = c("patient" = "patientID"))
    
    right_join(expression, clinical2, by = c("patient" = "patientID"))
    

    Al examinar la salida, noté que había 3 filas más en la salida de right_join en comparación con la salida de left_join. Esto me pareció extraño, ya que ‘clinical2’ tenía 516 filas, mientras que ‘expression’ tenía 570 filas. Al analizar más a fondo, descubrí que las tres filas adicionales presentes en la salida de right_join contenían varios valores NA. Esto indica que estas filas pertenecían a pacientes encontrados en ‘clinical2’, pero no en ‘expression’.

    Aún no estoy seguro de por qué la función right_join devolvió estas filas adicionales, pero agradecería cualquier ayuda o conocimiento sobre este asunto.

Comments are closed.