2011-10-03 2 views
1

私は行インデックスを抽出するためにdata.frameで二重一致を行いたいと思います。たとえば、次のdata.frameではmatch1を最初に一致させ、match1の各要素内でmatch2で一致させたいと思います。私は二重の一致をチェックするためにはdata.frameにダブルマッチする

test = data.frame(name = c("bob" , "jane","adam","jane" ,"bob" , "adam") , date = as.Date(c(1,2,2,1,2,1))) 
match1 = c("jane" , "adam", "bob") 
match2 = c(as.Date(c(2,1))) 
result = c(2,4,3,6,5,1) 

答えて

5

注テスト

に-sort
library("zoo") 

thに対応するdata.frameの指標e data.frameは、match1に従ってnameによってソートされ、次にmatch2に従ってdateによってソートされる。ファクタを使用してこの注文を作成し、次にorderを使用してインディーズを取得することができます。

order(factor(test$name, match1), factor(as.character(test$date), as.character(match2))) 

as.character

は、彼らが正しい順序で要因に変えることができるように文字に日付を強制するために必要とされます。

+0

は素晴らしい作品です!あなたは動物園について正しいです。本当にありがとう! – SFun28

0

一つの方法は、二重を行うことですマッチングてる、並べ替えていないよということを除いて(そして日付で、最初の名前で)ダブル一種と考えます書かれた通りに動作するようにコードのために、あなたはzooライブラリロード(そのマスクをas.Date)必要があることを「テスト」(このTEST2を呼び出す)と「テスト」の平等と「TEST2」

+0

huh?私はダブルソートしようとしていない、私はダブルマッチを試みている。そして、私は指数を抽出しようとしています。平等のためのテストではありません。 – SFun28

関連する問題