Tengo un marco de datos que relaciona los números de botella con sus volúmenes (key
en el ejemplo a continuación). Quiero escribir una función que tome cualquier lista de números de botella (samp
) y devolver una lista de los volúmenes de botellas mientras se mantiene el orden del número de botella en samp
.¿Cómo puedo fusionar y mantener el orden de fila de una entrada?
La función siguiente coincide correctamente con los números y volúmenes de las botellas, pero ordena la salida por el número de botella ascendente.
¿Cómo puedo mantener el orden de samp
con merge
? El establecimiento de sort=FALSE
da como resultado un "orden no especificado".
Ejemplo
samp <- c(9, 1, 4, 1)
num <- 1:10
vol <- sample(50:100, 10)
key <- data.frame(num, vol)
matchFun <- function(samp, key)
{
out <- merge(as.data.frame(samp), key, by.x="samp", by.y="num")
return(out$vol)
}
¿En serio? Está en el manual. Lee '? Merge'; 'sort = TRUE' es el valor predeterminado ... –
que no parece mantener el orden original de' samp' por alguna razón, aunque ... – KennyPeanuts
Bien mierda, me disculpo. 'sort = FALSE' devuelve las filas en un" orden no especificado ". Parece que necesito RTFM. ;-) Trae los votos por "gran comentario". Me gusta mi cuervo bien hecho. –