sqldf - 使用引用数据框中的变量,将一个变量添加到输入数据帧

时间:2018-01-04 16:04:21

标签: r sqldf

我的数据框每行都有CategoryCodes。多行具有相同的CategoryCodes,并且有几百个唯一CategoryCodes。我必须为每一行分配类别的名称,从参考数据框中提取类别。我尝试使用下面的语法,但这给了我一个输出,其中MyData中的行数增加了一倍。输出应与MyData具有相同的行数。我哪里错了?

 Combineddf<-sqldf("select * from MyData left join 
              ReferenceDf using (CategoryCodes)")

参考数据:

   CategoryCodes Class
5     120500      Tools
6     166300 Spare Parts
7     280200 Spare Parts
8     280200 Spare Parts
9     295200 Spare Parts
10    165000 Spare Parts

MyData(超过30列):

   X    Z     CategoryCodes    Y
5  OW   EA      120300         S
6  ANB  EA    120500            S
7  ANB  FOT    120300            S
8  ANB  EA    120500            S
9  ANB  EA    120300            S
10 MIS  EA    120500            S

1 个答案:

答案 0 :(得分:2)

当存在多个匹配项时,会发生连接中增加的行数。

Reference Data中,您可以看到重复的类别代码 - 例如,第7行和第8行都有代码280200,因此280200中的任何代码MyData都会与那些行。

也许您只想选择ReferenceDF的唯一行?像

这样的东西
Combineddf<-sqldf("select * from MyData left join 
              (select distinct * from ReferenceDf)
              using (CategoryCodes)")