2016-04-16 65 views
0

我有一个df状态,我试图为每个状态添加lat,long值,以便我可以绘制地图上每个状态的百分比值。当我使用合并,我得到任何空DF如果我不使用使用合并时的数据丢失

all=TRUE 

或者我得到失踪或者我的经纬度数据,根据本身我的数据的长期价值观的基础上我做X或Y

代码加载我的DF并添加列标题

fileURL <- c("https://drive.google.com/open?id=0B-jAX5hT2D3hNnVtLVhROENKRGs") 
suppressMessages(require(data.table)) 
ge.planted <- fread(fileURL, na.strings = "NA") 
colnames(ge.planted) <- c("region", "type", "crop", "2000", "2001", "2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009", "2010", "2011", "2012", "2013", "2014", "2015") 

代码以获取与纬度,经度值的状态名称为每个国家的中心

snames <- data.frame(region=tolower(state.name), long=state.center$x, lat=state.center$y) 

当我合并两个DF使用:

snames <- merge(ge.planted, snames, by="region") 

我得到

[1] region long lat type crop 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 
[17] 2011 2012 2013 2014 2015 

或者,如果我使用

snames <- merge(ge.planted, snames, by="region", all=TRUE) 

而且我得到了我的价值观,但没有纬度,经度

region      type crop 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 
1: Alabama Insect-resistant (Bt) only Cotton - - - - - 10 10 10 18 13 11 18 17 12 
2: Alabama Herbicide-tolerant only Cotton - - - - - 28 25 25 15 18 7 4 11 4 
3: Alabama  Stacked gene varieties Cotton - - - - - 54 60 60 65 60 76 75 70 82 
4: Alabama   All GE varieties Cotton - - - - - 92 95 95 98 91 94 97 98 98 
5: Arkansas Herbicide-tolerant only Soybean 43 60 68 84 92 92 92 92 94 94 96 95 94 97 
6: Arkansas   All GE varieties Soybean 43 60 68 84 92 92 92 92 94 94 96 95 94 97 
    2014 2015 long lat 
1: 9 4 NA NA 
2: 6 3 NA NA 
3: 83 90 NA NA 
4: 98 97 NA NA 
5: 99 97 NA NA 
6: 99 97 NA NA 

And fina LLY与

snames <- merge(snames, ge.planted, by="region", all=TRUE) 

我得到的纬度,经度,但没有价值

 region long lat type crop 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 
1 alabama -87 33 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 
2  alaska -127 49 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 
3 arizona -112 34 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 
4 arkansas -92 35 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 
5 california -120 37 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 
6 colorado -106 39 <NA> <NA> <NA> <NA> <NA> <NA> <NA> NA NA NA NA NA NA NA NA NA NA NA 

从最好的,我可以告诉,而不是基于“区域”是上所附的“Y”值合并文件数据帧的末尾。

+0

我已经整理了今年的聚会和百分比种植 –

+0

您的帖子是不可复制的,因为它是。你可以使用dput()在你的文章中包含你的数据集(或者一个子集,足以重现你的问题)。 – MLavoie

+0

fread错误(url,na.strings =“NA”):测试标题行格式后未正确定位。 CH ='h''。 (用'url'替换'fileURL'后)。 'packageVersion(“data.table”)'是'1.9.6' – lukeA

回答

0

问题是您使用了tolower(),因此一个框架中的区域名称与另一个框架中的区域名称不同(ge.planted具有大写字母,snames没有)。所以合并不会将区域名称识别为等同的。删除tolower()调用,它应该工作。