2011-12-06 14 views
12

Ho provato a selezionare le righe in base al loro ID. Ad esempio, in un frame dati chiamato test, ID 201 ha 6 righe di dati, ID 202 ha 6 righe di dati e 203, 204 ..... ecc.Selezionare più righe condizionamento su ID in R

Ora voglio solo estrarre 201 e 202 dal set di dati, quindi dovrebbe avere 12 righe del tutto. Tuttavia

out <- test[test$ID==c(201,202), ] 
out <- subset(test, ID==c(201,202)) 

restituisce solo tre 201 e tre 202, che sono riga 1, riga 3, Fila di 5 8 10 12.

Qualcuno può fornire alcuni suggerimenti che come posso fare questo in R?

+3

Nel caso ti stia chiedendo * perché * hai ottenuto ciò che hai fatto, '==' confronta element-wise e ricicla un vettore se si esaurisce. Quindi è semplicemente alternato controllando la colonna ID con 201 e 202. La risposta '% in%' è la migliore, ma potresti anche aver usato 'sottoinsieme (test, ID == 201 | ID == 202)' – Gregor

risposta

21

Si desidera %in%, non ==.

out <- test[test$ID %in% c(201, 202), ] 
out <- subset(test, ID %in% c(201, 202)) 
+0

Grazie mille . – Fred

+0

@MattDowle questo è un ottimo candidato per la vignetta data.table-intro o forse le FAQ! Ho sicuramente calpestato questa miniera lo scorso fine settimana. –

Problemi correlati