2017-03-15 5 views
0

Ich brauche drei Tabellen zu verknüpfen:Join drei Tabellen-Lookup

Table1:(5325 x 6) 
POLICY YEAR Prem Loss LRtot LRPP 
217570 2008 3651 0  0  0 
. 
. 


Table2: (216 x 1) 
POLICY 
217570 
251440 
290102 
. 
. 
655825 

Table3: (11551 x 4) 
YEAR STATE POLICY DIST_MIL 
2011 TN 217570 11.0 
2013 TN 217570 10.7 
2016 TN 217570 10.7 
. 
. 
. 

ich die Ausgabe wie folgt aus (DIST_MIL ist 2016 Wert) erhalten möchten:

Output Table: 
POLICY YEAR Prem Loss LRtot LRPP DIST_MIL 
217570 2008 3651 0  0  0 10.7 

Wie kann ich das erreichen in R:?

+0

Es gibt eine Vielzahl von Möglichkeiten, Tabellen zu verknüpfen. Durchsuchen Sie die Foren. Für eine Drei-Wege-Verbindung erfordern die meisten das Verbinden von 1 und 2, und dann das Ergreifen dieses Ergebnisses und das Verbinden mit 3. – akaDrHouse

Antwort

0

A dplyr Lösung:

library(dplyr) 
final3_join <- Table1 %>% inner_join(Table2,by="POLICY") %>% 
inner_join(Table3,by="POLICY") 

Wenn Sie nur Datensätze möchten, die in der letzten Tabelle sein in Tabelle 1 waren, dann ersetzen inner_join mit left_join.

Nach Ihrem Kommentar bearbeitet. Sie können die Daten auf dem Weg in der letzten Verknüpfung filtern.

final3_join <- Table1 %>% inner_join(Table2,by="POLICY") %>% 
    inner_join(filter(Table3,YEAR==2016),by="POLICY") 

Hinweis: Wenn Jahr als Zeichen definiert dann würden Sie es in Anführungszeichen setzen, „2016“

+1

Danke Frank für die Rückmeldung. – akaDrHouse

+0

Danke für die schnelle Antwort. Dies ist korrekt, aber wie können Sie den Code für die Zusammenführung mit DIST_MIL aus 2016 in Tabelle 3 ändern? Ihre obigen Codebeispiele zeigen alle drei Entfernungswerte für dieselbe Richtlinie an. Ich brauche nur den DIST_MIL-Wert nur für das Jahr 2016. – user3408139

+0

@ user3408139 Ich habe meine Antwort für Sie geändert. – akaDrHouse