这个问题在这里已经有了答案:
Merge two data frames while keeping the original row order
(12 个回答)
3年前关闭。
我有一个数据框,它将瓶子编号与其体积相关联(在下面的示例中为 key
)。我想编写一个函数,该函数将采用任何瓶子编号列表( samp
)并返回瓶子体积列表 同时保持 samp
中的瓶号顺序 .
下面的函数正确匹配瓶号和体积,但按瓶号升序对输出进行排序。
如何维护samp
的顺序与 merge
?设置 sort=FALSE
导致“未指定的顺序”。
示例
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)
}
最佳答案
你可以用 match
来做到这一点和子集 key
结果:
bottles <- key[match(samp, key$num),]
# rownames are odd because they must be unique, clean them up
rownames(bottles) <- seq(NROW(bottles))
关于r - 如何合并和维护一个输入的行顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144551/