2016-08-29 2 views
4

Мне нужно сделать декартово произведение двух кадров данных. Например,R: любая функция для декартова продукта двух фреймов данных?

A = id weight type 
    10 20  a 
    10 30  b 
    25 10  c 
B = date report 
    2007 y 
    2008 n 

тогда C будет, как после выполнения декартово произведение A и B

C = id weight type date report 
     10 20  a 2007 y 
     10 20  a 2008 n 
     10 30  b 2007 y 
     10 30  b 2008 n 
     25 10  c 2007 y 
     25 10  c 2008 n 

как некоторые идентификаторами являются одинаковыми в A, так что я не могу использовать так, как

C <- merge(A$id,B$date) 
C <- merge(C,A,by="id") 
C <- merge(C,B,by="date") 

Этот способ будет генерировать больше строк. Может ли кто-нибудь помочь мне уйти отсюда? Спасибо

ответ

8

merge(A, B), при условии, что нет столбцов, связывающих два, следует делать это по умолчанию, нет?

От ?merge (курсив):

Если с помощью или оба by.x и by.y имеют длину 0 (длина вектора нулевого или NULL), в результате, г, является декартово продукт из x и y, т. е. dim (r) = c (nrow (x) * nrow (y), ncol (x) + ncol (y)).

По общему признанию, для этого требуется знать, посмотреть в ?merge. Контекстный поиск в R строго отсутствует; даже rseek не предоставляет это немедленно.

+0

Вы правы. большое спасибо!! –

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

  • Нет связанных вопросов^_^