我有一个df状态,我试图为每个状态添加lat,long值,以便我可以在地图上绘制每个状态的百分比值。当我使用合并时,如果我不使用
,我会得到并且空dfall=TRUE
或者我的lat数据缺失,数据本身的长值取决于我生成的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")
获取状态名称的代码,其中lat为每个状态中心的long值
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
最后用
snames <- merge(snames, ge.planted, by="region", all=TRUE)
我得到lat,很长但没有值
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
从最好的情况来说,我可以告诉而不是基于&#39;区域&#39;来合并文件。它附加了&#39; y&#39;值到数据框的末尾。
答案 0 :(得分:0)
问题是你使用了tolower(),因此一帧中的区域名称与另一帧中的区域名称不同(ge.planted有大写,而snames没有)。因此合并不会将区域名称识别为等效名称。删除tolower()调用,它应该可以工作。