基于 R 中的多个通配符条件对数据框进行子集化
Subsetting a Data Frame based on multiple wildcard criteria in R
我有一个名为 Test1
的数据框,其中包含 23 万家公司。我需要做的是将 Tests1
子集化为一个名为 FinalDS
.
的新 DF
我创建了一个名为 Customers
的列表,其中包含我需要放入我的 FinalDS
DF 中的多个客户名称变体(大约 100k)。
我正在寻找的是 R 来查看我的 Customers
DF 并在 Test1
DF 中查找客户名称但是!....我需要的是 R 来扫描 Customers
DF 并查看它是否可以将 Customers
DF 中的客户名称的任何部分匹配到 Test1
DF
例如:
我在 Customers
DF 上有这个客户:
Centrica PLC
但是在 Test1
DF 上我有 Centrica
所以根据定义将没有匹配项。我知道我可以通过从 Customers
DF 中删除 PLC
部分来使所有客户匹配,但我有一个大约 100k 客户的列表。
这是我写的代码:
Customers = c("Adidas","ADIDAS GROUP","ALIBABA GROUP","ALIBABA.COM (EUROPE) LTD"
,"Apple Asia Pacific Pte Ltd" ,"APPLE DISTRIBUTION INTERNATIONAL"
,"APPLE EUROPE LTD","Apple Sales International"
,"AVIVA-PLC","Aviva -Norwich Union"
,"Aviva -Norwich Union-MSP","AVIVA PLC"
,"AXA TECHNOLOGY SERVICES UK LTD","AXA UK PLC"
,"Bank of Baroda","Bank of Baroda"
,"BARCLAYS","BARCLAYS BANK PLC"
,"BARCLAYS PLC","BRAVURA SOLUTIONS LTD"
,"CENTRICA PLC","CISCO"
,"Cisco Systems LTD","CSC (NG)-MSP"
,"CSC COMPUTER SCIENCES LTD","EMC CORPORATION"
,"GE Infrastructure UK Limited","GE MEDICAL SYSTEMS INFORMATION TECHNOLOGIES GMBH")
FinalDS = subset(Test1, grepl(paste(Customers, collapse = "|"), Test1$Customer_Name))
所有这一切都是尝试逐字匹配我在 Customer
列表中的内容与 Test1
DF
请帮忙!
这个怎么样?
FinalDS = subset(
Test1,
grepl(paste0("(", paste(Customers, collapse = "|"), ")"), Customer_Name))
我有一个名为 Test1
的数据框,其中包含 23 万家公司。我需要做的是将 Tests1
子集化为一个名为 FinalDS
.
我创建了一个名为 Customers
的列表,其中包含我需要放入我的 FinalDS
DF 中的多个客户名称变体(大约 100k)。
我正在寻找的是 R 来查看我的 Customers
DF 并在 Test1
DF 中查找客户名称但是!....我需要的是 R 来扫描 Customers
DF 并查看它是否可以将 Customers
DF 中的客户名称的任何部分匹配到 Test1
DF
例如:
我在 Customers
DF 上有这个客户:
Centrica PLC
但是在 Test1
DF 上我有 Centrica
所以根据定义将没有匹配项。我知道我可以通过从 Customers
DF 中删除 PLC
部分来使所有客户匹配,但我有一个大约 100k 客户的列表。
这是我写的代码:
Customers = c("Adidas","ADIDAS GROUP","ALIBABA GROUP","ALIBABA.COM (EUROPE) LTD"
,"Apple Asia Pacific Pte Ltd" ,"APPLE DISTRIBUTION INTERNATIONAL"
,"APPLE EUROPE LTD","Apple Sales International"
,"AVIVA-PLC","Aviva -Norwich Union"
,"Aviva -Norwich Union-MSP","AVIVA PLC"
,"AXA TECHNOLOGY SERVICES UK LTD","AXA UK PLC"
,"Bank of Baroda","Bank of Baroda"
,"BARCLAYS","BARCLAYS BANK PLC"
,"BARCLAYS PLC","BRAVURA SOLUTIONS LTD"
,"CENTRICA PLC","CISCO"
,"Cisco Systems LTD","CSC (NG)-MSP"
,"CSC COMPUTER SCIENCES LTD","EMC CORPORATION"
,"GE Infrastructure UK Limited","GE MEDICAL SYSTEMS INFORMATION TECHNOLOGIES GMBH")
FinalDS = subset(Test1, grepl(paste(Customers, collapse = "|"), Test1$Customer_Name))
所有这一切都是尝试逐字匹配我在 Customer
列表中的内容与 Test1
DF
请帮忙!
这个怎么样?
FinalDS = subset(
Test1,
grepl(paste0("(", paste(Customers, collapse = "|"), ")"), Customer_Name))