2016-04-26 4 views
1

Ich habe dieses DT:Wie kann ich Gruppen überspringen, während ich in data.table mit dem Schlüssel untergeordnet bin?

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 

Ich brauche Gruppen zu beseitigen, während subsetting aber nur, wenn die Daten eine Bedingung erfüllt. So etwas funktioniert nicht:

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

So dass ich die Gruppen entfernen müssen, die die Bedingung nicht erfüllen. In diesem Beispiel würde Ich mag die Gruppen überspringen, die Länge als 4 unterscheidet Damit erhalte ich:

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

Aber ich habe das nicht in der Lage um zu arbeiten, würde ich jede Hilfe dankbar.

+5

tut 'dt [, wenn (. N == 4) .SD, von =" ID "]' Ihre Frage beantworten? – jangorecki

+0

Eigentlich ja! ... ich fühle mich so dumm hahahaha –

+1

@ jangorecki: warum nicht posten? –

Antwort

3

@jangorecki kam mit der Antwort auf:

tut dt[, if (.N==4) .SD, by="ID"] Ihre Frage zu beantworten?

+0

Vielen Dank, mein Herr! –

Verwandte Themen