首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中检查来自两个不同数据帧的两个字符串列的部分匹配?

如何在R中检查来自两个不同数据帧的两个字符串列的部分匹配?
EN

Stack Overflow用户
提问于 2016-06-09 00:42:35
回答 2查看 249关注 0票数 0

我是R的新手,正在为一些甚至可能不会被正确问到的问题而苦苦挣扎,但这就是我目前最好的表达方式。我有两个不同的CSV文件读入R。dataA1包含481242行和71列(即变量),其中之一是conm (即公司名称)。dataB1包含7列(变量)的1615行,其中一列是company.name。

来自dataB1的1615个公司名称中的一些与来自dataA1的481242个公司名称中的一些部分或完全匹配(重叠)。

我的目标是,在dataB1中创建一个列,对于在dataA1中也能找到的公司,我将有1-s (部分或完全相同的名称),对于在那里找不到的公司,我将有0-s。

你知道该怎么做吗?

为了让您更好地了解数据的外观,下面是dataA1

代码语言:javascript
复制
1-PAGE LTD
3I GROUP PLC
3I INFOTECH LTD
401 HOLDINGS LTD
4CS HOLDINGS CO LTD
55 STATION INC
600 GROUP PLC (THE)
7DIGITAL GROUP PLC

以及需要从dataB1匹配的列:

代码语言:javascript
复制
1-Page Ltd
180 Connect Inc
3DLabs Inc., Ltd.
3M France
3U Holdings AG
4Imprint Group Plc
724 Solutions Inc
7days music entertainment AG
EN

回答 2

Stack Overflow用户

发布于 2016-06-09 02:51:15

我没有足够的细节,但我会考虑使用标志操作。标志运算符只是标识向量中的哪些值出现在相应的数据框、向量等中。对于您的示例,我将执行以下操作:

代码语言:javascript
复制
dataB1 <- toupper(dataB1)
flag   <- dataB1 %in% dataA1

如果值在dataA1中完全匹配,则此代码将提供TRUE,否则将以向量的形式提供FALSE

票数 0
EN

Stack Overflow用户

发布于 2016-06-13 20:49:50

您可以尝试stringdist包的amatch函数,例如:

代码语言:javascript
复制
library(stringdist)

toSearch <- c("1-PAGE LTD","3I GROUP PLC","3I INFOTECH LTD","401 HOLDINGS LTD",
              "4CS HOLDINGS CO LTD", "55 STATION INC","600 GROUP PLC (THE)",
              "7DIGITAL GROUP PLC")

lookupTable <- c("1-Page Ltd", "180 Connect Inc", "3DLabs Inc., Ltd.",
                 "3M France","3U Holdings AG", "4Imprint Group Plc", "724 Solutions Inc",
                 "7days music entertainment AG")

acceptableDistanceThresh = 0.23
lookupTableIndex <- amatch(toupper(toSearch),
                           toupper(lookupTable),
                           method='jw',
                           maxDist=acceptableDistanceThresh,
                           nthread = 4)


res <- data.frame(toSearch,
                  lookupTableValue=lookupTable,
                  lookupTableIndex=lookupTableIndex)

> res
                 toSearch   lookupTableValue lookupTableIndex
1          1-PAGE LTD         1-Page Ltd                1
2        3I GROUP PLC               <NA>               NA
3     3I INFOTECH LTD               <NA>               NA
4    401 HOLDINGS LTD     3U Holdings AG                5
5 4CS HOLDINGS CO LTD               <NA>               NA
6      55 STATION INC               <NA>               NA
7 600 GROUP PLC (THE)               <NA>               NA
8  7DIGITAL GROUP PLC 4Imprint Group Plc                6

在基本包中有函数agrep,它可以执行部分匹配,但它不是矢量化的,也不是多线程的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37708314

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档