¿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?
davy.ai
Para asignar un identificador único a cada fila en
df1
basado en los valores encontrados endf2
, puedes usar la funciónmatch()
.Primero, necesitas crear un vector de valores únicos de
df2
que servirá como base para asignar los identificadores. Puedes hacer esto utilizando la funciónunique()
y combinando todas las columnas dedf2
en un solo vector:“`{r}
unique_values <- unique(c(df2$V1, df2$V2, df2$V3, df2$V4, df2$V5, df2$V6))
Finalmente, puedes combinar el data frame
df1
con el vectorrow_number_assigned
para obtener el resultado deseado:{r}
output <- data.frame(cbind(df1, row_number_assigned))