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.

Añade valor a una fila comparando el nombre de la columna en una tabla con el valor de la columna en otra tabla en R.

Df1:

ID de variante ID1 ID2 ID3 ID4 …. ID80000
123 0 1 2 1 0
321 1 2 1 1 1
543 1 1 2 1 1
6542 1 0 0 1 0
243 1 0 2 1 1
654 0 1 1 2 1
342 1 2 1 2 1
present 0 1 0 1 0

Df2:

ID sexo yob enfermedad
ID1 M 10/10/1910 cáncer
ID2 F 05/02/2000 LMC
ID3 F 01/01/1983 gota

Me gustaría agregar las columnas de DF2 como filas en DF1 poniendo los nombres de columna en la columna de variantes de DF1 haciendo coincidir en las ID

Resultado deseado

ID de variante ID1 ID2 ID3 ID4 …. ID80000
123 0 1 2 1 0
321 1 2 1 1 1
543 1 1 2 1 1
6542 1 0 0 1 0
243 1 0 2 1 1
654 0 1 1 2 1
342 1 2 1 2 1
present 0 1 0 1 0
sexo M F F NA NA
yob 10/10/1910 05/02/2000 01/01/1983 NA NA
enfermedad cáncer LMC gota NA NA

He intentado:

df1[“sexo”,] <- df2$sexo[match(df2$ID, colnames(df1),]

Lo cual no funciona.

He logrado que esto funcione:

df1[“sexo”,] <- ifelse(colnames(df1) %in% df2$ID, df2$sexo, NA)

Ni siquiera sé cómo acercarme a hacer esto con más de una columna a la vez.

Cualquier ayuda sería muy apreciada.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar la función merge para unir dos marcos de datos. Esto agregará las columnas de DF2 como filas en DF1, coincidiendo con los IDs.

    R
    df3 <- merge(df1, df2, by.x = "ID", by.y = "ID")

    Esto te dará el resultado deseado.

Comments are closed.