首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何同时执行模糊连接和差连接

如何同时执行模糊连接和差连接
EN

Stack Overflow用户
提问于 2021-03-31 10:02:26
回答 1查看 26关注 0票数 0

我正在尝试连接到数据集,其中连接字段是1.一个数值列,我希望允许差异阈值为0.05,以及2.其他两个字段的精确字符匹配。有关两个数据集和所需输出的简化示例,请参阅下面的内容:

代码语言:javascript
复制
# df1
site    genus   distance        
HA  Melaleuca   0.1     
HA  Melaleuca   0.1     
HA  Eucalyptus  0.3     
HA  Melaleuca   0.6     
HA  Eucalyptus  1.3     
HA  Eucalyptus  1.55        
HA  Eucalyptus  1.55        
HA  Melaleuca   1.75        
HA  Melaleuca   1.8     
HA  Melaleuca   1.9



#df2
site    genus   distance    1998    2008
HA  Eucalyptus  0.1 na  4
HA  Melaleuca   0.1 4   4
HA  Eucalyptus  0.3 4   d
HA  Melaleuca   0.65    4   3
HA  Melaleuca   1.8 na  4
HA  Eucalyptus  1.6 5   4
HA  Eucalyptus  2.1 2   3
HA  Melaleuca   2.5 4   4
HA  Melaleuca   2.6 4   3
HA  Eucalyptus  2.7 2   n/a

#desired join output
site    genus   distance    1998    2008
HA  Melaleuca   0.1 na  4
HA  Melaleuca   0.1 4   4
HA  Eucalyptus  0.3 4   d
HA  Melaleuca   0.6 4   3
HA  Eucalyptus  1.3 na  na
HA  Eucalyptus  1.55    5   4
HA  Eucalyptus  1.55    5   4
HA  Melaleuca   1.75    na  na
HA  Melaleuca   1.8 na  na
HA  Melaleuca   1.9 na  na
HA  Eucalyptus  2.1 2   3
HA  Melaleuca   2.5 4   4
HA  Melaleuca   2.6 4   3
HA  Eucalyptus  2.7 2   n/a

函数difference_full_join() fuzzyjoin包允许指定一个距离阈值(在上面的例子中,它匹配任何" distance“值在0.05以内的值),但是我不能在其中使用精确的字符匹配来确保sitegenus列是相同的。通过将==指定为要匹配的函数,在fuzzy_full_join()函数中可以很容易地完成第二部分,但是我不知道如何为match_fun =参数编写函数,以便它执行相同的操作。我可以在网上找到的这个函数的所有例子都使用了更简单的术语,比如<=

EN

回答 1

Stack Overflow用户

发布于 2021-03-31 12:12:37

我想发布一个我找到的解决办法的答案。

因为字符匹配是不确定的,并且不是模糊的,所以我向两个原始数据集添加了一个数字因子列(因此在上面的示例中,Eucalyptus = 1,Melaleuca = 2,HA =1。然后,我做了一个差值为0.5的difference_full_join -因为因子是完美匹配的,这意味着difference_join只用于distance列。

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

https://stackoverflow.com/questions/66880663

复制
相关文章

相似问题

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