2016-10-20 6 views
-2

ich zwei Datenrahmen haben:Zusammenführen von zwei Datenrahmen in r (Aktualisierung und Drop-Werte)

data <- data.frame(ID1 = c("D1","D1","D1","D1","D2","D2"), 
       ID3 = c("A","A","D","D","B","C"), 
       Attribute = c("KL","KM","KL","KM","AB","AB"), 
       Value = c(2,2,3,3,5,7)) 


data_new <- data.frame(ID1 = c("D1","D1","D2","D2"), 
       ID2 = c("D1-1","D1-1","D2-1","D2-1"), 
       Attribute = c("KL","TA","AB","AA")) 

Nun möchte Ich mag die Values und ID3 von Daten in meinem neuen Datenrahmen integrieren. Außerdem möchte ich einige Attribute löschen und neue hinzufügen. Die Ausgabe sollte wie folgt aussehen:

expected_output <- data.frame(ID1 = c("D1","D1","D1","D1","D2","D2","D2","D2"), 
          ID2 = c("D1-1","D1-1","D1-1","D1-1","D2-1","D2-1","D2-1","D2-1"), 
          ID3 = c("A","A","D","D","B","B","C","C"), 
          Attribute = c("KL","TA","KL","TA","AB","AA","AB","AA"), 
          Value = c(2,2,3,3,5,5,7,7)) 

Kann mir jemand dabei helfen?

Was ich bisher versucht, ist eine einfache Zusammenführung.

mergeddata <- merge(data_new,data, 
       by.x = c("ID1"), 
       by.y = c("ID1")) 

Das Ergebnis sieht vielversprechend für ID1 = D2 würde ich nur die Spalte fallen muß Attribute.x“. Allerdings ID = D1 ist nicht das, was ich will. Zeilen 5-8 sollen nicht mehr in der neuen Tabelle sein.

jeden Hilfe

+0

Es ist nicht klar, was Sie versuchen zu tun Was ist das denken von gettin g von Daten und data_new bis expected_output? – user1945827

+0

Nehmen wir an, ID1 wäre ein Wertpapier in einem Fonds (ID3) mit einigen Attributen, die dem Wertpapier beigefügt sind (ID1) und einem Wert (Position) in jedem Fonds. Jetzt haben sich die Attribute für die Sicherheit geändert (data_new) und sie erhalten eine neue ID (ID2), basierend auf ID1. Ziel ist es, Daten mit den neuen Attributen zu aktualisieren, aber die Positionen und Werte beizubehalten. Ist das klarer? – Walde

Antwort

0

ich glaube, Sie folgendes versuchen könnten:.

mergeddata <- merge(data_new ,unique(data[, c("ID1", "ID3", "Value")]), by = "ID1") 
+1

Das sieht sehr vielversprechend aus – Walde

Verwandte Themen