加入具有不同观察值的两个数据集

问题描述 投票:0回答:1

我有两个包含子区域的人口和经度/纬度的数据集。由于每个子区域都有几个地理条目,因此我希望以将人口显示在每个单独的相应地理行中的方式加入这些数据集。我已经尝试了每个dplyr命令(inner_join,full_join等),但无法使其正常工作。对此的任何帮助将不胜感激!

数据集1(100个观察值)

subregion    population 

adams        66949
alexander     7051
bond         17137
...          ...

数据集2(10000个观察值)

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
...         ...          ...
r dplyr inner-join
1个回答
0
投票
#library(tidyverse) # 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

注意:绑定被丢弃。如果需要键的弹出,但不需要纬度/经度(它将设置为NA),请使用merge(A,B,by =“ subregion”,all.x = TRUE,all.y = TRUE)。

一个人可以将all.x / all.y的各种组合设置为FALSE的情况下,保留第一帧或第二帧的全部内容(或填充NA)。

© www.soinside.com 2019 - 2024. All rights reserved.