2016-04-24 3 views
0

トランザクションテーブル(以下に添付される画像)には、1つのトランザクション内に多数のアイテムがあります。例: - 最初の取引には3つの項目(224,43,76はItemID)があり、データはCol3まで存在します。同様に、5000行までのデータがあります。RlookでのVlookの使用方法

ItemID、Price、ProductNameのアイテムテーブルがあります。

トランザクションテーブルのCol0〜Col58の数字を、それぞれのProductNameをItemNoに基づいて置き換える必要があります。これは両方のテーブルにあります。

すべてのトランザクションに第1のアイテムがあるため、商品名を取得できるので、Col0のproductNameを置き換える次のコードを記述しました。

ただし、トランザクションテーブルのCol1に対して同じ処理を行うと、一致しない値は無視されます。したがって、結果を元のトランザクション構造に戻すことはできません。次を使用することができます

col1 <- sqldf("SELECT Trans2.Col0_01, lookupitem.ProductName FROM Trans2 INNER JOIN lookupitem ON Trans2.Col0_01 = lookupitem.Item") 
Trans2$oneitem<-col1$ProductName 

[Data Table - Transactions][1] 
Index Col0 Col1 Col2........Col58 
    1 224 43 76 
    2 23  43 
    3 34 
    4 1  32 

[Item Description][2] 
ItemNo Price ProductName 
    0 2.5 Cheese 
    1 1.5 Apple 

強いテキスト

答えて

0

Transactions[,-1] <- apply(Transactions[,-1], 1:2, 
         function(i) Description$ProductName[match(i, Description$ItemNo)]) 
関連する問題