2011-12-09 14 views
0

I df.1とdf.2行の数が異なるとItemIndexは各データフレーム内で一意である次のRプログラムを有する:R:列に基づいて、非整列データフレームをマージする方法値

df.1 = data.frame(ItemName = ItemNameVector, ItemIndex = ItemIndexVector) 
df.1.len = length(df$ItemName) 

df.2 = data.frame(ItemIndex = ItemIndexVector2) 

ret = vector(length = df.1.ret) 
for(i in 1:df.1.len) { 
    index = df.1[i, "ItemIndex"] 
    ret[i] = df.2[df.1$ItemIndex == index, "ItemName"] 
} 

つまり、df.1 ItemIndexとdf.2 ItemIndexが一致するdf.1 ItemNameの値をすべて検索したいとします。 ItemIndexの値は一意ですが、df.1とdf.2では同じではありません。

私はmerge()で何かがあると思いますが、各フィールドの値に基づいて選択的なケースでは動作させることができませんでした。

Rでこれを行う最も簡単な方法は何ですか?

答えて

1

これはあなたの質問に対する回答です(あなたのコードはdf.1のデータではなく、df.2のデータを返します)。

subset(df.1, ItemIndex %in% df.2$ItemIndex, select=ItemName) 
2

(皮肉にも十分に)あなたの例では、再現性がないので、これは、テストされていないですが、私はあなたがmatchを探しているかもしれないと思う:

ret <- df.2$ItemName[match(df.1$ItemIndex, df.2$ItemIndex)] 

matchことが最初の一致の位置を返すので、これはItemIndexの一意性を前提としています。

+0

ありがとうございました。正確に私が探していたもの。 –

関連する問題