2016-04-26 74 views
1

我有這個DT:如何在data.table中使用鍵進行子集時跳過組?

dt=data.table(ID=c(rep(letters[1:2],each=4),'b'),value=seq(1,9)) 
    ID value 
1: a  1 
2: a  2 
3: a  3 
4: a  4 
5: b  5 
6: b  6 
7: b  7 
8: b  8 
9: b  9 

我需要消除組,而子集化,但只有當數據滿足某些條件。像這樣的東西不起作用:

dt[,{if (.N==4) .SD else NULL 
    v1},by="ID"] 

因此,我需要刪除不符合條件的組。在這個例子中,我想跳過這長度大於4不同的,所以我得到的羣體:

ID value 
1: a  1 
2: a  2 
3: a  3 
4: a  4 

但我一直沒能圍繞這個工作,我希望得到任何幫助。

確實dt[, if (.N==4) .SD, by="ID"]回答你的問題:

+5

does'dt [,if(.N == 4).SD,by =「ID」]'回答你的問題? – jangorecki

+0

其實是的!...我覺得很愚蠢hahahaha –

+1

@ jangorecki:爲什麼不張貼? –

回答

3

@jangorecki的回答上來?

+0

謝謝你好,先生! –

相關問題