全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2208 3
2020-07-17
大佬们,请问下我有数据集A和数据集B,他们都有“品种”这一列,我想把他们通过品种进行合并,但是数据集A中的品种可能有些项的内容是“铜、铝”,而数据集B中的品种每一项就是标准的品种名称,如“铜”,精确匹配就无法识别,只能模糊匹配,所以如何才能使他们匹配上,然后讲两个数据集合并或者是将数据集B剩下的列添加到数据集A对应行后面
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-7-17 10:57:19
既然B的品种是标准化名称,那么factor一下,level数应该不是很大。A的品种,估计是人工操作随意性比较大,但也不会太过杂乱。基于这种理解,建议两种方案:
一、如你所说,模糊匹配,但这样需要对样本进行循环处理,对B的每一个样本都需要对A遍历匹配。
二、如果A的品种不是差异太大,比如说根本没有规律那种,可以两个数据表都增加一列ID,B的品种按照level标准化,A的品种可以编个函数,用正则表达式或者字符串操作提取标准品种,并赋值标准化ID,用apply函数族对所有样本加以处理。最后,就可以按ID执行join操作。这个方案无法解决A中单一样本多个品种重复的问题。
另外,能否从根本上解决A的数据结构问题。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-7-17 22:47:18
这个包我不太会用,你可以用自己的数据试一试:

library(fuzzyjoin)
C<- regex_left_join(A, B, by = c(品种 = "品种"))

#by选项中,第一个品种是A的变量名,第二个“品种”是B的变量名
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-8-20 11:57:26
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群