我有一個數據表,DT,以列A,B和C.我想每獨特乙只有一個A,以及我想選擇使A基於C的值(子集劃分後數據表選擇最大的C)。缺少的行上的單個列
在此基礎上(難以置信的幫助)SO頁,Use data.table
to get first of subgroup based on a variable,我想是這樣的:
test <- data.table(A=c(1:3,1:2),B=c(1:5),C=c(11:15))
setkey(test,A,C)
test[,.SD[.N],by="A"]
在我的測試情況下,這給了我,似乎是正確的答案:
# A B C
# 1: 1 6 16
# 2: 2 7 17
# 3: 3 8 18
# 4: 4 4 14
# 5: 5 5 15
並且,正如預期的那樣,行數與DT中「A」的唯一條目數相匹配:
length(unique(test$A))
# 5
然而,當我將它應用於我的實際數據集時,我缺少大約20%的最初約200萬行。
我似乎不能放在一起測試數據集,將創建此類型的損失。實際數據集中沒有空值。還有什麼可能是在數據集中的因素,會導致來自像test[,.SD[.N],by="A"]
和length(unique(test$A))
結果的數量之間的差異?
「類似」或那些確切的命令,只是在不同的數據集? – eddi
另外,目前還不清楚爲什麼你不要簡單地減少數據集,直到找到儘可能小的數據集,而這些數據集仍然表現出任何不需要的行爲。簡單地刪除說最後N行 - 你仍然得到同樣的問題?不,那麼問題出現在最後N行。是的,然後刪除更多的行。超過2M行的二進制搜索最多可以發現21個問題。 – eddi
@eddi:確切的命令,只是改變了適當的列名稱。而且,好點。現在要做... – neuropsych