2012-04-24 2 views
1

Я получил таблицу данных X (504x9) и меньшую фрейму данных bzShare (323X4) как с колонками top.sector, так и sizeClass. Теперь я хочу присоединиться к значению от bzShare до X так, чтобы размеры X были (504x10). Внутреннее соединение выбирает только строки с соответствующими ключами в обоих х и у, если я прав, но я всегда получаю нулевые строки :-(plyr R пустое внутреннее соединение

> dim(X) 
[1] 504 9 
> names(X) 
[1] "sizeClass" "top.sector" "year" "period" "somevar" 
[6] "sumTest" "sumTestTotal" "AN" "share"      
> names(bzShare) 
[1] "top.sector" "sizeClass" "bzShare" 
> join(X,bzShare,type="inner",by=c("top.sector","sizeClass")) 
NULL data table 

Почему не получить это (504x10) кадр данных?

ответ

2

Просто потому, что два data.frames или матрицы имеют одинаковые имена столбцов, это не значит, что они будут хорошо сочетаться между собой, потому что у них могут не быть общих ключей между ними, что будет типичным результатом во внутреннем деле JOIN например, тот, который вы описываете.

Проверьте также, что ваш объект bzShare не пуст, хотя он имеет vali d имен столбцов (т. Я скучаю результат dim(bzShare))

Начать с:

count(X$top.sector %in% bzShare$top.sector) 
count(X$sizeClass %in% bzShare$sizeClass) 

и посмотреть, если вы получите что-то в каждом множестве пересечения.

+0

Спасибо, я проверил пересечение, которое сработало. теперь я просто установил его с добавлением нового столбца id, вставив два байта. Тогда это работает. –

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