2017-05-22 1 views
-1

Ich habe zwei Tabellen table1 mit Dokumentnamen und table2 mit Dokumentencodes und Informationen des Dokuments. Ich möchte überprüfen, ob die Dokumentnummer in Tabelle2 im Namen in Tabelle1 ist und dann aus Tabelle2 die Informationen zu Tabelle1 extrahieren.String-Prüfung mit 2 Tabellen und Grab Daten

Ich mag jede Zeile in Tabelle 1 gegen alle Zahlen der Tabelle 2

Tabelle 1 überprüfen:

Documentname 
29.01.00-03.001.doc 
22.01.01-03.001-B-Offerteproces - procedure.docx 
29.01.01-01.001-B-Offerteproces algemeen.docx 
29.01.01-01.002-B-Aanbieden - offerteproces.docx 
29.01.01-01.002e-B-Quotation process.docx 
29.01.01-01.003-B-RFQ announcement - offerteproces.docx 
29.01.01-01.004-B-Offerteinformatie complementeren - offerteproces.docx 
29.01.01-01.005-B-Offerteplanning - offerteproces.docx 
29.01.01-01.006-B-Handover quotation - offerteproces.docx 
29.01.01-01.007-B-Elektrisch ontwerp - offerteproces.docx 

Table2:

Documentnumber  new     old    Status Revision 
C-06-100-02-VM  29.04.40-10.002e K-15-0-004.3e Vervallen E 
EM-15-0-3.4   29.02.70-07.020.6 KO-03-ES-020.6 Vervallen C 
KO-03-E2-020.6  29.02.70-07.020.6 EM-15-0-3.4  Vervallen C 
KO-03-TF-43.4  29.02.02-07.043.4 BE-03-IS-10.1 Vervallen A 
P-10-001-02-KAM  29.60.01-03.002  TF-00-0-0.9  Vervallen E 
29.02.02-07.043.4 29.02.01-00.100.2 KO-03-TF-43.4 Vervallen A 
29.04.30-03.003  29.04.30-03.004  BM-06-0-3.1  Vervallen A 
29.04.30-03.006  29.04.23-03.003  BM-06-0-3.4  Vervallen A 
29.04.30-03.010  29.04.10-03.006  BM-15-0-3.1  Vervallen A 
29.04.30-03.016  29.04.30-03.005  BM-04-0-3.2  Vervallen A 
29.04.30-03.017  29.04.30-03.005  BM-04-0-3.3  Vervallen A 
29.04.30-04.002  29.04.30-04.005  BM-05-0-3.2  Vervallen A 
29.04.30-10.001  29.04.23-10.001  BM-01-0-4.1  Vervallen A 
29.04.30-10.002  29.04.23-10.002  BM-04-0-4.1  Vervallen A 
29.04.30-10.011  29.04.23-10.003  BM-04-0-4.2  Vervallen A 
+0

Bitte zeigen Sie, was Sie bisher versucht haben, und was hat und nicht funktioniert. – Axeman

+0

Wie wäre es mit einem [Fuzzy-Join] (https://cran.r-project.org/web/packages/fuzzyjoin/index.html)? – Axeman

Antwort

0

Es gibt keine Übereinstimmung in Ihren Beispieldaten zwischen den Zahlen in Table1 und Table2, aber das sollte funktionieren.

für jede Zeile von Table1 Ich überprüfe, ob die Nummer in irgendeiner Zeile von Table2 ist, die mir eine boolesche Matrix gibt. Wenn es mindestens eine TRUE pro Zeile gibt, bedeutet dies, dass die Zahl aus Tabelle1 in Tabelle2 ist. Wenn es mindestens einen TRUE pro Spalte gibt, bedeutet dies, dass die Nummer aus Tabelle 2 in Tabelle1 ist. Ich füge diese Ergebnisse am Ende an die Tabellen an.

bool_mat <- unlist(sapply(Table2$Documentnumber,grepl,Table1$Documentname)) # each row represents a row from Table1, each col a row from Table2 
Table1$number_in_table2 <- apply(bool_mat,1,any) 
Table2$number_in_table1 <- apply(bool_mat,2,any)