2016-04-24 8 views
0

Transaktionen Tabelle (Bild unten angehängt) hat viele Elemente in 1 Transaktion. Zum Beispiel: - Die erste Transaktion hat 3 Positionen (224, 43, 76 sind ItemID), so dass Daten bis Spalte Col3 vorhanden sind. Ähnlich gibt es Daten bis 5000 Zeilen.Wie Vlook mit Index in R

Ich habe Artikel Tabelle, die ItemID, Preis und ProductName hat.

Ich muss Zahlen in Col0 bis Col58 in Transaktionstabelle mit ihren jeweiligen ProductName auf ItemNo ersetzen, die in beiden Tabellen vorhanden ist.

Ich habe den folgenden Code geschrieben, der den productName für Col0 ersetzen, da alle Transaktionen 1. Element haben, können wir die Produktnamen erhalten.

Wenn ich jedoch dasselbe für Col1 in der Transaktionstabelle mache, ignoriert es die Werte, die nicht übereinstimmen. Daher kann das Ergebnis nicht zur ursprünglichen Transaktionsstruktur zurückgeführt werden.

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 

starker Text

Antwort

0

Sie können die folgenden,

Transactions[,-1] <- apply(Transactions[,-1], 1:2, 
         function(i) Description$ProductName[match(i, Description$ItemNo)])