Как объединить неоднородные фреймы данных с реальными данными - PullRequest
0 голосов
/ 28 февраля 2019

Проблема: У меня есть два набора данных разных размеров, которые я хотел бы объединить.Не оставляя рядов и не вставляя NA.Чтобы сравнить это с ситуацией с документом Excel, у вас было бы пять столбцов, и вы бы перетаскивали 3 из них, чтобы заполнить пустое пространство, оставленное вставленными строками, добавив ваши данные в 4-й и 5-й столбцы.

Пример данныхУстановите 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, в котором каждая городская комбинация zipcode объединяется с их поп-статусом и доходом.Общий столбец, который у них есть, - это столбец аббревиатур.

  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, где я хотел бы, чтобы для каждого abv of NY средний доход штата и общая численность населения копировались по линии.Для каждого AR, каждого AL и т. Д. До тех пор, пока два набора данных не станут одним, можно создать ggplot, используя все данные.

1 Ответ

0 голосов
/ 28 февраля 2019

dplyr::left_join(a, b, by="abv") должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...