2015-08-22 16 views
0

我想合并两个共享一些相同变量的数据集,以使一个数据集中的变量'EF'和'LF'被适当地分配。但是,对于其中一个变量('项目'),这两个数据集的复杂程度不同。我在下面提供了两个数据集(它们本身都是较大数据集的子集)。R合并数据集按预期工作(多对多)

似乎合并正确发生,但输出不是我所期待的。具体而言(作为示例),对于'Meat',产生'Item.x'的级别名称与'Item.y'的级别名称不匹配。我只会在合并完成后保留其中一个'Item'列,但我想在忽略(和删除)'Item.x'之前检查'Item.y'的输出对于该概念是否正确。

从以前的援助和搜索,我曾尝试下面的代码的不同版本进行合并DF1和DF2:

merge.df <- merge(df1, df2, by=c("Region", "Group"), all=T) 

例如,改变在命令DF1和DF2的顺序,或添加“项目“进入'by'函数提供的输出完全不正确。

我错过了什么?

谢谢!

INPUT DF1

Region Group Item Stage LF 
Europe Fruit.Veg  FSC1 20 
Europe Fruit.Veg  FSC2 5 
Europe Fruit.Veg  FSC3 2 
Europe Fruit.Veg  FSC4f 5.8935 
Europe Fruit.Veg  FSC4p 2 
Europe Fruit.Veg  FSC5f 19 
Europe Fruit.Veg  FSC5p 15 
Europe Meat Bovine FSC1 2.3 
Europe Meat Mutton FSC1 10 
Europe Meat Goat FSC1 10 
Europe Meat Pig FSC1 2.5 
Europe Meat Poultry FSC1 7 
Europe Meat Bovine FSC2 0.613 
Europe Meat Mutton FSC2 0.618 
Europe Meat Goat FSC2 0.618 
Europe Meat Pig FSC2 0.23 
Europe Meat Poultry FSC2 1.765 
Europe Meat  FSC3 5 
Europe Meat  FSC4 4.033333333 
Europe Meat  FSC5 11 
Europe Marine  FSC1 9.4 
Europe Marine  FSC2 0.5 
Europe Marine  FSC3 6 
Europe Marine  FSC4f 9 
Europe Marine  FSC4p 5 
Europe Marine  FSC5f 11 
Europe Marine  FSC5p 10 
Europe Milk.Eggs Milk FSC1 3.5 
Europe Milk.Eggs Milk FSC2 0.5 
Europe Milk.Eggs Milk FSC3 1.2 
Europe Milk.Eggs Milk FSC4 0.713333333 
Europe Milk.Eggs Milk FSC5 7 
Europe Milk.Eggs Eggs FSC1 4 
Europe Milk.Eggs Eggs FSC2 0 
Europe Milk.Eggs Eggs FSC3 0.5 
Europe Milk.Eggs Eggs FSC4 2 
Europe Milk.Eggs Eggs FSC5 8 

DF2

Region Sub-Region Group Item EF 
Europe Europe Fruit.Veg Apples 0.227686081 
Europe Europe Fruit.Veg Bananas 0.35 
Europe Europe Fruit.Veg Citrus 0.344375 
Europe Europe Fruit.Veg Grapes 0.41 
Europe Europe Fruit.Veg Fruit.Other 2.029212613 
Europe Europe Fruit.Veg Vegetables 0.917924249 
Europe Europe Meat Bovine 22.68119086 
Europe Europe Meat Mutton 20.99167461 
Europe Europe Meat Goat 18.19083333 
Europe Europe Meat Pig 5.04123312 
Europe Europe Meat Poultry 3.712 
Europe Europe Marine Fish.Seafood 4.117510463 
Europe Europe Milk.Eggs Milk 1.308859756 
Europe Europe Milk.Eggs Eggs 3.83 

输出 merge.df

Region Group Item.x Stage LF Sub.Region Item.y EF 
Europe Fruit.Veg  FSC1 20 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC1 20 Europe Bananas 0.35 
Europe Fruit.Veg  FSC1 20 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC1 20 Europe Grapes 0.41 
Europe Fruit.Veg  FSC1 20 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC1 20 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC2 5 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC2 5 Europe Bananas 0.35 
Europe Fruit.Veg  FSC2 5 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC2 5 Europe Grapes 0.41 
Europe Fruit.Veg  FSC2 5 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC2 5 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC3 2 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC3 2 Europe Bananas 0.35 
Europe Fruit.Veg  FSC3 2 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC3 2 Europe Grapes 0.41 
Europe Fruit.Veg  FSC3 2 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC3 2 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC4f 5.8935 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC4f 5.8935 Europe Bananas 0.35 
Europe Fruit.Veg  FSC4f 5.8935 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC4f 5.8935 Europe Grapes 0.41 
Europe Fruit.Veg  FSC4f 5.8935 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC4f 5.8935 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC4p 2 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC4p 2 Europe Bananas 0.35 
Europe Fruit.Veg  FSC4p 2 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC4p 2 Europe Grapes 0.41 
Europe Fruit.Veg  FSC4p 2 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC4p 2 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC5f 19 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC5f 19 Europe Bananas 0.35 
Europe Fruit.Veg  FSC5f 19 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC5f 19 Europe Grapes 0.41 
Europe Fruit.Veg  FSC5f 19 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC5f 19 Europe Vegetables 0.917924249 
Europe Fruit.Veg  FSC5p 15 Europe Apples 0.227686081 
Europe Fruit.Veg  FSC5p 15 Europe Bananas 0.35 
Europe Fruit.Veg  FSC5p 15 Europe Citrus 0.344375 
Europe Fruit.Veg  FSC5p 15 Europe Grapes 0.41 
Europe Fruit.Veg  FSC5p 15 Europe Fruit.Other 2.029212613 
Europe Fruit.Veg  FSC5p 15 Europe Vegetables 0.917924249 
Europe Marine  FSC1 9.4 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC2 0.5 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC3 6 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC4f 9 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC4p 5 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC5f 11 Europe Fish.Seafood 4.117510463 
Europe Marine  FSC5p 10 Europe Fish.Seafood 4.117510463 
Europe Meat Bovine FSC1 2.3 Europe Bovine 22.68119086 
Europe Meat Bovine FSC1 2.3 Europe Mutton 20.99167461 
Europe Meat Bovine FSC1 2.3 Europe Goat 18.19083333 
Europe Meat Bovine FSC1 2.3 Europe Pig 5.04123312 
Europe Meat Bovine FSC1 2.3 Europe Poultry 3.712 
Europe Meat Mutton FSC1 10 Europe Bovine 22.68119086 
Europe Meat Mutton FSC1 10 Europe Mutton 20.99167461 
Europe Meat Mutton FSC1 10 Europe Goat 18.19083333 
Europe Meat Mutton FSC1 10 Europe Pig 5.04123312 
Europe Meat Mutton FSC1 10 Europe Poultry 3.712 
Europe Meat Goat FSC1 10 Europe Bovine 22.68119086 
Europe Meat Goat FSC1 10 Europe Mutton 20.99167461 
Europe Meat Goat FSC1 10 Europe Goat 18.19083333 
Europe Meat Goat FSC1 10 Europe Pig 5.04123312 
Europe Meat Goat FSC1 10 Europe Poultry 3.712 
Europe Meat Pig FSC1 2.5 Europe Bovine 22.68119086 
Europe Meat Pig FSC1 2.5 Europe Mutton 20.99167461 
Europe Meat Pig FSC1 2.5 Europe Goat 18.19083333 
Europe Meat Pig FSC1 2.5 Europe Pig 5.04123312 
Europe Meat Pig FSC1 2.5 Europe Poultry 3.712 
Europe Meat Poultry FSC1 7 Europe Bovine 22.68119086 
Europe Meat Poultry FSC1 7 Europe Mutton 20.99167461 
Europe Meat Poultry FSC1 7 Europe Goat 18.19083333 
Europe Meat Poultry FSC1 7 Europe Pig 5.04123312 
Europe Meat Poultry FSC1 7 Europe Poultry 3.712 
Europe Meat Bovine FSC2 0.613 Europe Bovine 22.68119086 
Europe Meat Bovine FSC2 0.613 Europe Mutton 20.99167461 
Europe Meat Bovine FSC2 0.613 Europe Goat 18.19083333 
Europe Meat Bovine FSC2 0.613 Europe Pig 5.04123312 
Europe Meat Bovine FSC2 0.613 Europe Poultry 3.712 
Europe Meat Mutton FSC2 0.618 Europe Bovine 22.68119086 
Europe Meat Mutton FSC2 0.618 Europe Mutton 20.99167461 
Europe Meat Mutton FSC2 0.618 Europe Goat 18.19083333 
Europe Meat Mutton FSC2 0.618 Europe Pig 5.04123312 
Europe Meat Mutton FSC2 0.618 Europe Poultry 3.712 
Europe Meat Goat FSC2 0.618 Europe Bovine 22.68119086 
Europe Meat Goat FSC2 0.618 Europe Mutton 20.99167461 
Europe Meat Goat FSC2 0.618 Europe Goat 18.19083333 
Europe Meat Goat FSC2 0.618 Europe Pig 5.04123312 
Europe Meat Goat FSC2 0.618 Europe Poultry 3.712 
Europe Meat Pig FSC2 0.23 Europe Bovine 22.68119086 
Europe Meat Pig FSC2 0.23 Europe Mutton 20.99167461 
Europe Meat Pig FSC2 0.23 Europe Goat 18.19083333 
Europe Meat Pig FSC2 0.23 Europe Pig 5.04123312 
Europe Meat Pig FSC2 0.23 Europe Poultry 3.712 
Europe Meat Poultry FSC2 1.765 Europe Bovine 22.68119086 
Europe Meat Poultry FSC2 1.765 Europe Mutton 20.99167461 
Europe Meat Poultry FSC2 1.765 Europe Goat 18.19083333 
Europe Meat Poultry FSC2 1.765 Europe Pig 5.04123312 
Europe Meat Poultry FSC2 1.765 Europe Poultry 3.712 
Europe Meat  FSC3 5 Europe Bovine 22.68119086 
Europe Meat  FSC3 5 Europe Mutton 20.99167461 
Europe Meat  FSC3 5 Europe Goat 18.19083333 
Europe Meat  FSC3 5 Europe Pig 5.04123312 
Europe Meat  FSC3 5 Europe Poultry 3.712 
Europe Meat  FSC4 4.033333333 Europe Bovine 22.68119086 
Europe Meat  FSC4 4.033333333 Europe Mutton 20.99167461 
Europe Meat  FSC4 4.033333333 Europe Goat 18.19083333 
Europe Meat  FSC4 4.033333333 Europe Pig 5.04123312 
Europe Meat  FSC4 4.033333333 Europe Poultry 3.712 
Europe Meat  FSC5 11 Europe Bovine 22.68119086 
Europe Meat  FSC5 11 Europe Mutton 20.99167461 
Europe Meat  FSC5 11 Europe Goat 18.19083333 
Europe Meat  FSC5 11 Europe Pig 5.04123312 
Europe Meat  FSC5 11 Europe Poultry 3.712 
Europe Milk.Eggs Milk FSC1 3.5 Europe Milk 1.308859756 
Europe Milk.Eggs Milk FSC1 3.5 Europe Eggs 3.83 
Europe Milk.Eggs Milk FSC2 0.5 Europe Milk 1.308859756 
Europe Milk.Eggs Milk FSC2 0.5 Europe Eggs 3.83 
Europe Milk.Eggs Milk FSC3 1.2 Europe Milk 1.308859756 
Europe Milk.Eggs Milk FSC3 1.2 Europe Eggs 3.83 
Europe Milk.Eggs Milk FSC4 0.713333333 Europe Milk 1.308859756 
Europe Milk.Eggs Milk FSC4 0.713333333 Europe Eggs 3.83 
Europe Milk.Eggs Milk FSC5 7 Europe Milk 1.308859756 
Europe Milk.Eggs Milk FSC5 7 Europe Eggs 3.83 
Europe Milk.Eggs Eggs FSC1 4 Europe Milk 1.308859756 
Europe Milk.Eggs Eggs FSC1 4 Europe Eggs 3.83 
Europe Milk.Eggs Eggs FSC2 0 Europe Milk 1.308859756 
Europe Milk.Eggs Eggs FSC2 0 Europe Eggs 3.83 
Europe Milk.Eggs Eggs FSC3 0.5 Europe Milk 1.308859756 
Europe Milk.Eggs Eggs FSC3 0.5 Europe Eggs 3.83 
Europe Milk.Eggs Eggs FSC4 2 Europe Milk 1.308859756 
Europe Milk.Eggs Eggs FSC4 2 Europe Eggs 3.83 
Europe Milk.Eggs Eggs FSC5 8 Europe Milk 1.308859756 
Europe Milk.Eggs Eggs FSC5 8 Europe Eggs 3.83 
+0

当你说“因素”时,你的意思是“因素”在R的意义上,还是你实际上只是指变量或价值? – Tchotchke

回答

0

当你合并的只是区域和群体,你正在做一个多一对多合并。举例来说,对于欧洲和Fruit.Veg,第一个df和第二个中有6个记录,所以最终在合并表中有42个(7 * 6)记录 - 这对于许多人来说是正确的行为一对多合并。

看来你想要的是在合并的声明中包含Item,但是它可能不会给你所期望的行为,因为Item在某些df1记录中缺失。如果不是这种情况,您能否解释将项目添加到合并语句时不正确的行为。

+0

“不正确的行为”在“肉”的'df.merge'输出中被举例说明,其中'item.x'可能与'item.y'不同。我期待他们排队。在'by'调用中包含'item'不会产生所需的结果。我很高兴仅仅消除'item.x'列,但我试图理解函数调用为什么会这样。我可能使用了错误的语法 - 我认为我真的是指变量。谢谢! –