2011-11-08 6 views
5

ベクトル化された機能の重要性について、私が読んでいるので、誰かが私をここで助けてくれることを願っています。ベクトル化された方法での値の参照

私は名前とIDという2つの列を持つデータフレームを持っているとします。今私は名前と生年月日がある別のデータフレームも持っていますが、このデータフレームは最初のデータフレームよりはるかに大きく、最初のデータフレームの名前の一部ではありません。 2番目のテーブルを使用して検索された出生地で作成された最初のテーブルに3番目の列を追加するにはどうすればよいですか。私が持っているもの

は今である:これは非効率です

corresponding.birthplaces <- sapply(table1$Name, 
    function(name){return(table2$Birthplace[table2$Name==name])}) 

。思考?誰かがRを正しく使うための良い本/リソースを知っていますか?私は、一般的に考えているのは計算上効果的な考え方で考えているという感じです。

感謝:)

+1

は 'match'を見てください – Andrie

答えて

6

データベース・リンクのマージを実行したり、参加する?mergeを参照してください。ここで

は一例です:

与え
set.seed(2) 
d1 <- data.frame(ID = 1:5, Name = c("Bill","Bob","Jessica","Jennifer","Robyn")) 
d2 <- data.frame(Name = c("Bill", "Gavin", "Bob", "Joris", "Jessica", "Andrie", 
          "Jennifer","Joshua","Robyn","Iterator"), 
       Birthplace = sample(c("London","New York", 
             "San Francisco", "Berlin", 
             "Tokyo", "Paris"), 10, rep = TRUE)) 

> d1 
    ID  Name 
1 1  Bill 
2 2  Bob 
3 3 Jessica 
4 4 Jennifer 
5 5 Robyn 
> d2 
     Name Birthplace 
1  Bill  New York 
2  Gavin   Tokyo 
3  Bob  Berlin 
4  Joris  New York 
5 Jessica   Paris 
6 Andrie   Paris 
7 Jennifer  London 
8 Joshua   Paris 
9  Robyn San Francisco 
10 Iterator  Berlin 

をその後、我々が参加行うためにmerge()を使用します?

> merge(d1, d2) 
     Name ID Birthplace 
1  Bill 1  New York 
2  Bob 2  Berlin 
3 Jennifer 4  London 
4 Jessica 3   Paris 
5 Robyn 5 San Francisco 
関連する問題