我有兩個data.table dx
和dy
加入data.table與參數
dx <- data.table(a = c(1,1,1,1,2,2), b = 3:8)
dy <- data.table(a = c(1,1,2), c = 7:9)
我想加入dy
到dx
每一行,以下是所需的輸出
data.table(plyr::ddply(dx, c("a", "b"), function(d) merge(d, dy, by = "a")))
a b c
1: 1 3 7
2: 1 3 8
3: 1 4 7
4: 1 4 8
5: 1 5 7
6: 1 5 8
7: 1 6 7
8: 1 6 8
9: 2 7 9
10: 2 8 9
但是,我沒有使用data.table
或merge
的[]
內部的操作使輸出失敗?我已經厭倦了
merge(dx, dy, by = "a", all = TRUE)
錯誤vecseq(f__,len__,如果(allow.cartesian || notjoin || anyDuplicated(f__,: 加入導致10行;超過9 = nrow(X) + nrow(i)。檢查重複的鍵值,每個鍵值在x中一次又一次地加入到同一組中,如果沒有問題,可以嘗試= .EACHI爲每個組運行j以避免大的分配。你一定要繼續,請重新運行與allow.cartesian = true;否則,請搜索的常見問題解答此錯誤消息,維基,堆棧溢出和數據表,幫助諮詢。
dy[dx,on="a"]
vecseq中的錯誤(f__,len__,if(allow.cartesian ||不加入|| !anyDuplicated(f__,: 將結果加入10行;超過9 = nrow(x)+ nrow(i)檢查重複鍵值,每個鍵值都重複加入到同一個組中。沒關係,試着用= .EACHI來爲每個組運行j以避免大的分配,如果你確定要繼續運行,重新運行allow.cartesian = TRUE。否則,請在FAQ,Wiki中搜索這個錯誤信息,堆棧溢出和數據表,幫助諮詢
dx[, merge(dy, by = "a"), by = c("a", "b")]
錯誤is.data.table(Y):參數 「y」 的缺失,沒有默認設置
dx[, merge(.SD, dy, by = "a"), by = c("a", "b")]
錯誤merge.data.table(.SD,DY,通過= 「A」):在by
上市 元素必須是在x和y
有效列名的我怎麼能做到這一點其實?
謝謝!
試試'dy [dx,on =「a」]'。 – nicola
@nicola我修改了我的問題。 – kitman0804
我很抱歉,但錯誤消息告訴你如何繼續。 「如果您確定要繼續,請重新運行allow.cartesian = TRUE。」你不明白嗎? – Roland