2014-12-18 4 views
0

Я успешно объединил dataframes, используя только один столбец, но у меня проблемы с слиянием на двух. У меня есть набор данных с различной информацией об округах/состояниях и вы хотите объединиться с lat/long этого состояния/штата из другого набора данных.Ошибка при слиянии dataframes

new1

Month  County ST Bag1 zip 
10 MIDDLESEX CT 1 06037 
10 MIDDLESEX CT 1 06037 
9 NEW LONDON CT NA 06355 
9 NEW LONDON CT NA 06355 
9 NEW LONDON CT NA 06355 
9 NEW LONDON CT NA 06355 
9 NEW LONDON CT NA 06355 
9 NEW LONDON CT 0 06355 
10 NEW LONDON CT 5 06355 
10 NEW LONDON CT 3 06355 

new2

NAME ST FIPS Latitude Longitude 
LITCHFIELD CT 9005 41.79274312 -73.24448889 
HARTFORD CT 9003 41.80570047 -72.73328657 
TOLLAND CT 9013 41.85298958 -72.337294 
WINDHAM CT 9015 41.82754918 -71.98851586 
NEW LONDON CT 9011 41.48228923 -72.10131783 
FAIRFIELD CT 9001 41.27179117 -73.38473902 
MIDDLESEX CT 9007 41.46673693 -72.53722401 
NEW HAVEN CT 9009 41.41124892 -72.93600942 

код я использую:

fullDataX = merge(new, new2[ , c("NAME","ST","Latitude", "Longitude")], by.x=c("County","NAME"),by.y=c("ST","ST"),all.x=T) 

Но я получаю следующее сообщение об ошибке: Ошибка в [.data.frame (CountyData, CountyData $ ST == "CT", c ("NAME", "ST",: undefined c olumns выбран

Я также попытался левой присоединиться к dplyr но получаю следующее сообщение об ошибке: Ошибка: не может присоединиться на «ST» столбцы «ST» х: индекс вне границ

Все мысли были бы весьма признателен , Я рассмотрел множество других вопросов и ответов, но, похоже, не нашел подходящего решения. Благодарю.

+1

является первым один называется "новый" или "new1"? дважды проверьте свое слияние. В вашем первом data.frame нет столбца «Имя», но вы используете его в «by.x = ...». –

ответ

2

Следующее может помочь вам:

fullDataX = merge(new1, new2, by.x = c("County", "ST"), by.y = c("NAME", "ST")) 
+0

Отлично работает. Я, должно быть, неправильно прочитал файлы справки, хотя синтаксис теперь имеет смысл, когда я знаю ответ. – tjr

Смежные вопросы