7

ボトル番号をそのボリュームに関連付けるデータ フレームがあります (key以下の例)。ボトル番号の任意のリスト ( ) を取得し、ボトル番号の順序を維持しながらsampボトル ボリュームのリストを返す関数を作成したいと考えています。samp

以下の関数は、ボトル番号と容量を正しく一致させますが、ボトル番号の昇順で出力を並べ替えます。

sampwithの順序を維持するにはどうすればよい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)
  }
4

2 に答える 2

4

これを行うと、結果によってmatchサブセット化できます。key

bottles <- key[match(samp, key$num),]
# rownames are odd because they must be unique, clean them up
rownames(bottles) <- seq(NROW(bottles))
于 2012-06-21T19:25:09.963 に答える
3

joinplyrパッケージにはこれに最適です...

samp <- c(9, 1, 4, 1)
num <- 1:10
vol <- sample(50:100, 10)
key <- data.frame(num, vol)
samp<-as.data.frame(samp)
names(samp)<-"num"
library("plyr")
join(key,samp,type="right")
于 2012-10-03T12:51:40.520 に答える