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.

¿Cómo asignar valores inequívocos para cada fila en un marco de datos basado en valores encontrados en filas de otro marco de datos utilizando R?

He estado luchando con esta pregunta durante unos días.
Necesito escanear cada fila de un marco de datos y luego asignar un identificador único para cada fila basado en los valores encontrados en un segundo marco de datos. Aquí hay un ejemplo de juguete.

df1<-data.frame(c(99443975,558,99009680,99044573,599,99172478))
names(df1)<-"Edificio"
V1<-c(558,134917,599,120384)
V2<-c(4400796,14400095,99044573,4500481)
V3<-c(NA,99009680,99340705,99132792)
V4<-c(NA,99156365,NA,99132794)
V5<-c(NA,99172478,NA, 99181273)
V6<-c(NA, NA, NA,99443975)
row_number<-1:4
df2<-data.frame(cbind(V1, V2,V3,V4,V5,V6, row_number))

La salida que espero es la siguiente.

row_number_asignado<-c(4,1,2,3,3,2)
output<-data.frame(cbind(df1, row_number_asignado))

¿Algún consejo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asignar un identificador único a cada fila en df1 basado en los valores encontrados en df2, puedes usar la función match().

    Primero, necesitas crear un vector de valores únicos de df2 que servirá como base para asignar los identificadores. Puedes hacer esto utilizando la función unique() y combinando todas las columnas de df2 en un solo vector:

    “`{r}
    unique_values <- unique(c(df2$V1, df2$V2, df2$V3, df2$V4, df2$V5, df2$V6))


    A continuación, puedes iterar a través de cada fila de `df1` y usar la función `match()` para encontrar el índice del valor coincidente en `unique_values`. Esto te dará el identificador único para esa fila: ```{r} row_number_assigned <- numeric(nrow(df1)) for (i in 1:nrow(df1)) { row_number_assigned[i] <- match(df1[i, "Building"], unique_values) }

    Finalmente, puedes combinar el data frame df1 con el vector row_number_assigned para obtener el resultado deseado:

    {r}
    output <- data.frame(cbind(df1, row_number_assigned))

Comments are closed.