获取连接值的NA - dplyr包中的left_join()

时间:2015-10-31 15:29:39

标签: r dplyr

我是dplyr软件包的新手,并尝试对两个数据帧进行apply(dataframe, 2, max) 操作。

数据如下

join

现在,当我运行> overview Source: local data frame [972 x 14] household names x2003 x2004 x2005 x2006 x2007 x2008 x2009 x2012 last.avail last.avail.year absChange.last annChange.last (chr) (fctr) (int) (int) (int) (int) (int) (int) (int) (int) (int) (dbl) (int) (dbl) 1 single parent totala utgifterna 215300 219870 241920 241060 229290 253590 255950 277260 277260 2012 61960 0.02850119 2 single parent köpta livsmedel 26420 27910 28160 29100 28310 33020 35910 33740 33740 2012 7320 0.02754621 3 single parent bröd, spannmålsprodukter 4760 5770 4940 5360 5070 5830 6310 NA 6310 2009 1550 0.04810245 4 single parent ris och produkter av ris 240 290 210 230 220 280 420 NA 420 2009 180 0.09775732 5 single parent ris 100 70 70 130 110 180 200 NA 200 2009 100 0.12246205 6 single parent risprodukter 140 220 130 100 120 100 220 NA 220 2009 80 0.07824083 7 single parent pasta och produkter av pasta 410 450 370 460 580 490 600 NA 600 2009 190 0.06551908 > translation Source: local data frame [8 x 2] translation household (fctr) (fctr) 1 Accomodation bostad 2 Leisure and culture fritid och kultur 3 Transportation transport 4 Bought Groceries köpta livsmedel 5 Rent for accomodation hyra/avgift för hyres-/borätt (inkl garage) 6 Household services hushållstjänster 7 Rents (net) räntor (brutto) 8 Car expenses drift av bil 时,我得到以下结果。

left_join(overview, translation)

如您所见,所有翻译均为NA值。例如,索引编号> left_join(overview, translation) Joining by: "household" Source: local data frame [972 x 15] household names x2003 x2004 x2005 x2006 x2007 x2008 x2009 x2012 last.avail last.avail.year absChange.last annChange.last translation (chr) (fctr) (int) (int) (int) (int) (int) (int) (int) (int) (int) (dbl) (int) (dbl) (fctr) 1 single parent totala utgifterna 215300 219870 241920 241060 229290 253590 255950 277260 277260 2012 61960 0.02850119 NA 2 single parent köpta livsmedel 26420 27910 28160 29100 28310 33020 35910 33740 33740 2012 7320 0.02754621 NA 3 single parent bröd, spannmålsprodukter 4760 5770 4940 5360 5070 5830 6310 NA 6310 2009 1550 0.04810245 NA 4 single parent ris och produkter av ris 240 290 210 230 220 280 420 NA 420 2009 180 0.09775732 NA 5 single parent ris 100 70 70 130 110 180 200 NA 200 2009 100 0.12246205 NA 6 single parent risprodukter 140 220 130 100 120 100 220 NA 220 2009 80 0.07824083 NA 翻译应该等于“买了杂货”,但事实并非如此。

发生了什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

看起来household中的translation列实际上应该被称为names,因此它将与overview中的相应列具有相同的名称。您当前的代码是通过每个数据框中的household列加入的,但这些代码没有相应的值,因此您不会在两个数据框之间获得任何匹配。

您可以通过明确指定连接列来使代码以当前形式运行:

left_join(overview, translation, by=c("names"="household"))

在这种情况下,最好修复列名以避免两个数据帧之间的混淆。不过,我喜欢明确指定连接列,以便我可以准确地看到代码正在做什么。