2013-06-25 3 views
1

Я использую объединить функции по двум кадрам данных A и Bошибки, когда я использую «слияние()» в R

nrow(A) <- 11537 
nrow(B) <- 734 

Но когда я применяю объединить функцию следующим образом:

m <- merge(A,B,all.x=TRUE,by="id") 

nrow(m) <- 29730 

Я получаю «м» с 29730 рядами. «m» должно иметь 11537 строк только тогда, когда я объединяю B в A. Я не могу определить причины этого. Может кто-нибудь, пожалуйста, помогите мне? Что добавляется в «А»?

Файл большой, я не могу проверить вручную.

+0

Можете ли вы сделать небольшой, воспроизводимый пример, чтобы продемонстрировать свою проблему? См. Http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example о том, как это сделать эффективно. –

+0

'nrow (x) <- n' не существует. Сколько столбцов с одним заголовком существует в ваших файлах данных? Вы, вероятно, лучше назовите столбцы, на которых должно произойти слияние. Без воспроизводимого примера, на который указывает @Roman, никаких объяснений невозможно! – vaettchen

+0

@ RomanLuštrik Я сделал воспроизводимый пример, но как мне вставить таблицу (фрейм данных) здесь, нет опции? –

ответ

2

Если ваши значения id не уникальны в каждом data.frame, тогда в результате создается каждая комбинация возможных совпадений. например:

a = data.frame(id=c(1,1,1,2,2),val=1:5) 
b = data.frame(id=c(1,1,3,2,2),valb=11:15) 
m = merge(a,b,by="id",all.x=T) 

м будет иметь 10 строк - 6 с идентификатором = 1 и 4 с идентификатором = 2

Я думаю, это то, что вызывает ваше объединенное data.frame, чтобы стать больше, чем ожидалось.

+0

Hi @amit, спасибо. У меня проблема. Я задал вопрос, связанный с этим. http://stackoverflow.com/questions/17297021/fromjson-is-not-able-to-convert-some-entries-in-csv-format-and-showing-name вы можете посмотреть его и посмотреть, сможете ли вы Помоги мне? Спасибо. –

+0

Хорошая добыча! :-) –