我最近開始使用data.table包來識別符合某些條件的表列中的值。儘管我已經完成了大部分工作,但現在我仍然堅持這個問題:將data.table列的每個組中的值與向量中的值匹配
我有一個數據表table1,其中第一列(標籤)是組ID,第二列,o.cell,是一個整數。關鍵是「標籤」
我有另一個數據表,表2,包含單個列:「單元格」。
現在,我正試圖爲table1中的每個組找到table2中「cell」列中列「o.cell」的值。 table1有大約400K行被分成800多組不等大小。 table2有大約130萬行獨特的細胞數量。 「o.cell」table1列中的單元格編號可以在多個組中找到。
這似乎是一個簡單的任務,但我找不到正確的方法來做到這一點。根據我構建我的調用的方式,它要麼給我的結果與我期望的不同,要麼永遠不會完成,而且我必須結束R任務,因爲它凍結了(我的機器具有24 GB RAM)。
這裏的「變種」的電話我都試過的一個示例:
overlap <- table1[, list(over.cell =
o.cell[!is.na(o.cell) & o.cell %in% table2$cell]),
by = labels]
我很肯定這是使用數據表的這個任務,重要的是我能頂走錯了路沒有得到我想要的結果。
我將非常感謝任何幫助。謝謝。
您好,歡迎SO。爲了提供一個可重複的例子,你可以使用'reproduce()' - 該函數是'data.table'知道&指令在這裏:http://bit.ly/SORepro - [如何使一個偉大的R可重現例如](http://bit.ly/SORepro) –
你在一個(很小)的情況下運行了一些測試來檢查你的代碼是否正確?很難說當你在400k行上執行操作時會發生什麼...... – digEmAll
在黑暗中拍攝:在做分組業務之前只需標記列:'setkey(table1,o.cell);表1 [J(表2 $細胞),isin2:= TRUE]'。然後你可以做'table2 [isin2,{做一些有用的事情},by = labels]'。如果你的表格很大,你可能想避免用'<-' – Frank