R的新手,这是我两天内的第二个问题。我想按子区域合并两个数据框用于县地图。有很多关于如何执行此操作的示例和文档,我已经仔细阅读,但我的代码仍然无法实现。无论如何,这就是我所拥有的。
library(dplyr)
#Examine data set/s
#Data frame: County polygon points
> head(oc_df)
# long lat group order region subregion
# 59960 -83.66902 39.02989 2012 59960 ohio adams
# 59961 -83.56590 39.02989 2012 59961 ohio adams
# 59962 -83.37109 39.06426 2012 59962 ohio adams
# 59963 -83.30806 39.06426 2012 59963 ohio adams
# 59964 -83.30233 39.05280 2012 59964 ohio adams
# 59965 -83.25649 39.01842 2012 59965 ohio adams
#Data frame: Indemnity
head(oi_df)
# subregion indemnity
# 1 adams 42778.25
# 2 allen 88580.26
# 3 ashland 167509.27
# 4 ashtabula 25738.28
# 5 athens 7080.00
# 6 auglaize 99353.25
#Make sure indemnity is numeric & county is character
oi_df$indemnity <- as.numeric(oi_df$indemnity)
oi_df$subregion <- as.character(oi_df$subregion)
#Attach every point on polygons of the counties
ohcopa <- inner_join(oc_df, oi_df, by = "subregion")
#I get a list of 0 obs. and 7 variables.
#When that didn't work I tried
ohcopa <- merge(oc_df, oi_df, by = "subregion")
#Still the same
可能缺少基本的东西,不知道它是什么。
str(oi_df)
'data.frame': 86 obs. of 2 variables:
$ subregion: chr "adams " "allen " "ashland " "ashtabula " ...
$ indemnity: num 42778 88580 167509 25738 7080 ...
> str(oc_df)
'data.frame': 1427 obs. of 6 variables:
$ long : num -83.7 -83.6 -83.4 -83.3 -83.3 ...
$ lat : num 39 39 39.1 39.1 39.1 ...
$ group : num 2012 2012 2012 2012 2012 ...
$ order : int 59960 59961 59962 59963 59964 59965 59966 59967 59968 59969 ...
$ region : chr "ohio" "ohio" "ohio" "ohio" ...
$ subregion: chr "adams" "adams" "adams" "adams" ...
答案 0 :(得分:1)
执行以下操作:
oi_df$subregion <- trimws(oi_df$subregion)
之后尝试合并。
如果按照oi_df
中的定义查看您的子区域,您会看到例如
"adams "
请注意,该名称中有很多空格。但是,从第二个数据框中,我们得到了
"adams"
没有任何空白区域。
因此,您合并的键是不同的,需要先调整。也就是说,需要删除第一个键中的空格(或添加到第二个键中的空格,但让我们不要考虑那个)。基本包中的函数trimws
或者例如str_trim
中的stringr
(以及其他包中的许多其他等效函数)为您完成此操作。