合并和更新列

时间:2019-02-17 22:43:56

标签: r merge

我正在尝试使用R的合并功能重建一些MS Access更新查询逻辑,因为更新查询逻辑缺少一些参数。

Table link Google drive 在我的数据库“发票帐户分配”中,有2个表:

Account_Mapping Table:

Origin  Origin Postal Destination   Destination      Invoice
country code          country       postal code      Account
FRA       01           GBR            *               ZR001
FRA       02           BEL            *               ZR003
BEL       50           ARG            *               ZR002
GER       01           ITA            *               ZR002
POL       02           ESP            *               ZR001
ESP       50           NED            *               ZR003
*         95           FRA           38               ZR001
BEL        *            *             *               ZR002
*          *            *             *               ZR003
FRA        *          FRA            25               ZR004

Load_ID

 ID            Origin   Postal  Destination  Destination    Default 
               country   code                postal code    Invoice Account
2019SN0201948   FRA       98    FRA             38           XXAC001
2019SN0201958   POL       56    GBR             15           XXAC001
2019SN0201974   BEL       50    ARG             27           XXAC001
2019SN0201986   FRA       02    GER             01           XXAC001

表中的默认发票帐户(Load_ID和Status_ID)由Account_Mapping表中的发票帐户更新。

表Account_Mapping和Load_ID可以通过以下方式联接: 原产国和原产国, 原始邮政编码和邮政编码, 目的地国家和目的地,以及 目的地邮政编码和目的地邮政编码。

在account_mapping表中,有多个“ *”,表示字符串值可以为任何值。我无法使用合并功能建立此逻辑。请帮我一个更好的逻辑。

New_Assigned_Account_Final <- merge(Load_ID, Account_Mapping, by.x = 
c("Origin country","Postal code","Destination", "Destination postal code"), 
by.y = 
c("Origin country","Origin Postal code","Destination country", "Destination 
postal code"))

所需结果:

更新的Load_ID表如下。

Load_ID:

    ID        Origin    Postal  Destination  Destination    Default 
               country   code                postal code    Invoice Account
2019SN0201948   FRA       98    FRA             38             ZR003
2019SN0201958   POL       56    GBR             15             ZR003
2019SN0201974   BEL       50    ARG             27             ZR002
2019SN0201986   FRA       02    GER             01             ZR003

对于第一个ID,默认ID变为“ ZR003 ”,因为作为原产国的“ FRA”没有邮政编码-“ 98”,因此它属于所有“ *” ”存储桶,并分配给 ZR003

对于第三个ID,默认ID为“ ZR002 ”,因为作为原产国的“ BEL”具有与之关联的邮政编码“ 50”,而目的地邮政编码为“ ARG” “”可以是任何东西,因为“目的地”邮政编码栏中的“ *”,因此已分配给 ZR002

感谢您的投入。

0 个答案:

没有答案
相关问题