如何将不均匀的数据帧与真实数据合并

时间:2019-02-28 10:59:26

标签: r

问题: 我要合并两个不同大小的数据集。无需放弃行或插入NA。要将其与excel文档的情况进行比较,您将拥有五列,并向下拖动其中三列以填充将数据添加到第四和第五列所插入的行所留下的空白。

示例数据集 稍后在我的头脑风暴代码中使用zipcode = a,step3 = b解决我的问题

> head(zipcode_joincsv)
  zip        city abv latitude longitude median   mean   pop
226 01749      Hudson  AL 42.38981 -71.55791  76500  85689 18081
227 01752 Marlborough  AL 42.35091 -71.54753  71835  89002 36273
228 01754     Maynard  AL 42.43078 -71.45594  76228  82167 10414
229 01756      Mendon  AL 42.09201 -71.54474 102625 117692  5257
230 01757     Milford  AL 42.14918 -71.52149  68565  82206 26877
231 01760      Natick  AL 42.29076 -71.35368  90673 113933 31763
> head(step3_df)
  tolower.state.name. state.abb
1             alabama        AL
2              alaska        AK
3             arizona        AZ
4            arkansas        AR
5          california        CA
6            colorado        CO

所需结果: 一个DF,其中每个邮政编码城市组合与其状态pop和 收入。他们共有的一列是缩写列。

  tolower.state.name. zip    city       abv latitude longitude median   mean   pop 
1      alabama       01749 Hudson       AL 42.38981 -71.55791  76500  85689 18081    
2      alabama       01752 Marlborough  AL 42.35091 -71.54753  71835  89002 36273
3      alabama       01754 Maynard      AL 42.43078 -71.45594  76228  82167 10414
4      alabama       01756 Mendon       AL 42.09201 -71.54474 102625 117692  5257    
5      alabama       01757 Milford      AL 42.14918 -71.52149  68565  82206 26877       
6      alabama       01760 Natick       AL 42.29076 -71.35368  90673 113933 31763
7      alaska                         data from these rows
8      arizona                        data from these rows
9      arkansas                       data from these rows
10     california                     data from these rows
11     colorado                       data from these rows

我已经考虑使用类似的东西

sqldf ("SELECT a.Zip, a.City, a.State Abv, a.Lat, a.Long, a.median, a.mean, a.pop, b.state.name, b.states.abb, b.pop, b.income 
      FROM a a
      LEFT JOIN b b using (abv)")

我知道,仅当它能处理所有没有A匹配集的行时,它可能就不会起作用,它将输入一个NA,我想要的是纽约州每个平均收入的州总人口就被复制了。直到每个AR和每个AL等两个数据集都可以创建一个使用所有数据的ggplot为止。

1 个答案:

答案 0 :(得分:1)

dplyr::left_join(a, b, by="abv")应该可以工作。