字符串检查2个表并获取数据

时间:2017-05-22 08:37:01

标签: r match extract

我有两个表table1,其中包含文档名称,table2包含文档代码和文档信息。 我想检查table2中的documentnumber是否在table1的名称中,而不是从table2中提取信息到table1。

我想检查table1中的每一行与所有数量的表2

表1:

 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

表2:

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

1 个答案:

答案 0 :(得分:0)

表1和表2中的数字之间的样本数据不匹配,但这应该有效。

对于Table1的每一行,我检查数字是否在Table2的任何行中,这给了我一个布尔矩阵。如果每行至少有一个TRUE,则表示表2中的表1中的数字,如果每个列至少有一个TRUE,则表示表2中的数字在表1中。我最后将这些结果附加到表格中。

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)