2010-05-03 12 views
12

ho una grande dataframe con colonne quali:Sbarazzarsi di righe con attributi duplicati in R

ID, time, OS, IP 

Ogni riga di quella dataframe corrisponde a una voce. All'interno di quel dataframe per alcuni ID esistono diverse voci (righe). Mi piacerebbe sbarazzarmi di quelle righe multiple (ovviamente gli altri attributi saranno diversi per lo stesso ID). O mettere diverso: voglio solo una singola voce (riga) per ogni ID.

Quando uso unique nella colonna ID, ricevo solo i livelli (o ciascun ID univoco), ma voglio mantenere anche gli altri attributi. Ho provato ad usare apply(x,2,unique(data$ID)), ma questo non funziona neanche.

+1

È necessario definire che cosa si vuole fare con gli altri attributi per le osservazioni con lo stesso ID quando non sono d'accordo. – Aniko

+0

beh, mi piacerebbe vedere la distribuzione del sistema operativo degli utenti ... Quindi quando ho il dataframe con una sola voce per utente, Id do: mytable <- table (dataset $ os.name) e faccio qualche traccia dopo ... – CatholicEvangelist

risposta

26
subset(data,!duplicated(data$ID)) 

dovrebbe fare il trucco

+0

grazie mille - stavo per disperare ... – CatholicEvangelist

+0

Questo funzionerà se non hai in mente alcun euristico per come selezionare gli altri dati. Sembra un caso d'uso molto strano per me ... – Shane

+1

Esattamente quello di cui avevo appena bisogno James, grazie. –

3

Se si desidera mantenere una riga per ogni ID, ma c'è dati diversi su ogni riga, allora avete bisogno di decidere su una logica di scartare le righe aggiuntive. Per esempio:

df <- data.frame(ID=c(1, 2, 2, 3), time=1:4, OS="Linux") 
df 
    ID time OS 
1 1 1 Linux 
2 2 2 Linux 
3 2 3 Linux 
4 3 4 Linux 

Ora io non mancherà di tenere il valore del tempo massimo e l'ultimo valore OS:

library(plyr) 
unique(ddply(df, .(ID), function(x) data.frame(ID=x[,"ID"], time=max(x$time), OS=tail(x$OS,1)))) 
    ID time OS 
1 1 1 Linux 
2 2 3 Linux 
4 3 4 Linux 
+0

grazie mille per la risposta dettagliata !!! – CatholicEvangelist

Problemi correlati