2011-12-09 75 views
0

我有下述R節目其中df.1和df.2具有不同數量的行和的ItemIndex是在每個數據幀獨特: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 ItemName值,其中df.1 ItemIndex匹配df.2 ItemIndex。 ItemIndex值是唯一的,但在df.1和df.2中它們不相同。

我認爲有東西與merge(),但我不能使它適用於基於每個字段的值的選擇性案例。

在R中這樣做最簡單的方法是什麼?

回答

1

這是對您的問題的回答(您的代碼從df.2返回數據而不是df.1)。

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

謝謝。正是我在找的東西。 –