我有2个数据框需要加入。
一个来自汽车的EPA及其燃料经济性,另一个来自大学的停车许可证数据库。我需要调和并合并我在两个df上合并为一个名为“ join”的单列的汽车年份,制造商和模型的列。
当我进行左(或右)连接时,我会为每个停车许可证车的燃油经济性列返回一个新的df。但是,大约40%的色谱柱以燃料经济色谱柱中的NA形式返回。有时这是由于df之间的差异所致;我已经说明过的“ awd”,“ wagon”,“ Hybrid”等,以及gsub()来简化。这仍然不能解决所有NA问题。不知道如何在不共享整个DF的情况下使此可重现,但是我将展示我的代码和示例,说明何时可以工作,什么时候不工作。
library(dplyr)
library(plyr)
epa <- as.tbl(epa) #make these df's tbl
student <- as.tbl(student)
joinedStudent <- right_join(epa, student, by = 'join')
。
有效的实例:
“ 2013 Ac歌TL”
所有雪佛兰Malibu车型
。
获得NA的实例:
“ 2004 Acura TL” 所有“吉普”车型
。
我已经确认条目(即“ 2004 Acura TL”)与epa df中的条目相同,没有多余的空格,等等。它不是特定于年份的,也不是特定的,我可以看到的唯一模式是任何年份都没有加入“吉普”车型。
希望我缺少一些简单的东西。
编辑:即使我在df视图窗格中找不到或看到任何空格,结果还是尾随空格。这是解决我的问题的代码
#create function to remove trailing spaces
trim.trailing <- function (x) sub("\\s+$", "", x)
#apply function to remove trailing spaces
epa$joined <- trim.trailing(epa$joined)
答案 0 :(得分:0)
尝试一下:
print(bind_rows(epa %>% distinct(join), student %>% distinct(join)) %>% arrange(join))
也许您在其他地方有一些讨厌的空白空间-此代码应该可以帮助您发现它。
答案 1 :(得分:0)
@ N.Bailey指出了解决方案。它与尾随数据列中的幻像空间有关;我什至无法突出显示空格来注意到它们。
trim.trailing <- function (x) sub("\\s+$", "", x)
epa$joined <- trim.trailing(epa$joined)