R 将两个具有不同观测数的数据集连接起来

R 将两个具有不同观测数的数据集连接起来,r,dplyr,inner-join,R,Dplyr,Inner Join,我有两个包含人口和次区域经度/纬度的数据集。由于每个分区都有几个地理条目,因此我希望以一种方式连接这些数据集,即在每个对应的地理行中显示人口。我已经尝试了所有dplyr命令(内部连接、完全连接等),但无法使其工作。非常感谢您在这方面的任何帮助 数据集1(100次观察) 数据集2(10000次观测) 所需数据集 subregion longitude latitude population adams -91.49563 40.21018 66949 adams

我有两个包含人口和次区域经度/纬度的数据集。由于每个分区都有几个地理条目,因此我希望以一种方式连接这些数据集,即在每个对应的地理行中显示人口。我已经尝试了所有dplyr命令(内部连接、完全连接等),但无法使其工作。非常感谢您在这方面的任何帮助

数据集1(100次观察)

数据集2(10000次观测)

所需数据集

subregion   longitude   latitude   population

adams       -91.49563    40.21018  66949
adams       -90.91121    40.19299  66949
adams       -90.91694    39.75754  66949
alexander   -89.20380    37.32247   7051
...         ...          ...
如果需要bond的pop,但lat/long不是(VAL将设置为NA)


通过将all.x/all.y的各种组合设置为TRUE或FALSE,可以从第一帧或第二帧或两者(使用NAs填充)保留all

因此,df1的
bond
不应该出现在最终结果中,因为它不在df2中?您是否尝试了
dplyr::left_join(Dataset2,Dataset1,by='subsection')
left_join(dateset1,dateset2,by='subsection')
应该可以正常工作,left_join命令在合并我的数据集时不起作用。但是由于它被推荐了两次,我想我当前的数据集还有另一个问题。@MalteS。在这种情况下,您需要检查两个数据集中的
subsection
列是否相同,即:大写字母,空格
subregion   longitude   latitude

adams       -91.49563    40.21018
adams       -90.91121    40.19299
adams       -90.91694    39.75754
alexander   -89.20380    37.32247
...         ...          ...
subregion   longitude   latitude   population

adams       -91.49563    40.21018  66949
adams       -90.91121    40.19299  66949
adams       -90.91694    39.75754  66949
alexander   -89.20380    37.32247   7051
...         ...          ...
#library(tibble) # uncomment if needed to access tribble()

B <- tribble(  # Using tribble to make quick, easy df's from your post
  ~subregion,    ~population ,
  "adams",        66949,
  "alexander",     7051,
  "bond",         17137)

A <- tribble(
  ~subregion,   ~longitude,   ~latitude,
  "adams",       -91.49563,    40.21018,
  "adams",       -90.91121,    40.19299,
  "adams",       -90.91694,    39.75754,
  "alexander",   -89.20380,    37.32247)

merge(A,B,by="subregion")

#> merge(A,B,by="subregion")
#  subregion longitude latitude population

#1     adams -91.49563 40.21018      66949
#2     adams -90.91121 40.19299      66949
#3     adams -90.91694 39.75754      66949
#4 alexander -89.20380 37.32247       7051
merge(A,B,by="subregion",all.x=TRUE,all.y=TRUE)