Próbuję wykonać pełne łączenie kartezjańskie za pomocą data.table, ale przy odrobinie szczęścia.Kartezjański dołącz w data.table
Kod:
a = data.table(dt=c(20131017,20131018))
setkey(a,dt)
b = data.table(ticker=c("ABC","DEF","XYZ"),ind=c("MISC1","MISC2","MISC3"))
setkey(b,ticker)
oczekiwany wynik:
merge(data.frame(a),data.frame(b),all.x=TRUE,all.y=TRUE)
Próbowałem merge(a,b,allow.cartesian=TRUE)
ale daje mi następujący błąd - "Error in merge.data.table(a, b, allow.cartesian = TRUE) : A non-empty vector of column names for
przez is required.
"
Używam "R version 3.0.1 (2013-05-16)
" z najnowszymi pakietami data.table
. Każda pomoc będzie bardzo ceniona!
Pozdrowienia
To wygląda bardziej jak 'problemu expand.grid' podobny niż' merge'-problemu. Nie masz wspólnej zmiennej. –
Wymagane dane wyjściowe są uzyskiwane przez sprzężenie kartezjańskie za pomocą funkcji scalania, ale działa ona na data.frame i szukam rozwiązania data.table, jeśli jest to możliwe. – Manoj
Zazwyczaj dodajemy zmienną atrapa, scalam przez tę zmienną i mam 'allow.cartesian = TRUE'. 'CJ' i' expand.grid' mogą krzyżować wektory sprzężenia, ale nigdy nie mogłem znaleźć funkcji bazowej, aby utworzyć połączenie krzyżowe dwóch tabel. Czy ktokolwiek może wskazać taką funkcję, jeśli istnieje? – TheComeOnMan