2012-09-11 14 views
6

Sto riscontrando una difficoltà nel ridurre correttamente i numeri di riga in un frame di dati.Come ridurre automaticamente i numeri di riga nel frame di dati R quando si rimuovono le righe in R

Ho un set di dati denominato "mydata" che ho importato da un file di testo utilizzando R. Il frame di dati ha circa 200 righe con 10 colonne.

ho rimosso il numero di riga 3, 7, 9, 199 utilizzando:

mydata <- mydata[-c(3, 7, 9, 199),] 

Quando eseguo questo comando, la riga 3,7,9,199 se ne sono andati dalla lista, ma il numero di riga doesn' t si riduce automaticamente a 196, ma rimane a 200. Mi sembra che in qualche modo questi numeri di riga siano associati a ciascuna "riga" come parte del dataframe?

Come posso risolvere questo problema?

Ciò che mi infastidisce ancora di più è che quando importo il file di testo utilizzando R Studio, non ho alcun problema. (Vedo 196 quando eseguo il comando precedente). Ma quando si utilizza R, non è possibile modificare il numero di riga in un dataframe che corrisponde al numero effettivo di righe nell'elenco.

Qualcuno può dirmi come risolvere questo problema?

risposta

9

si può semplicemente fare:

rownames(mydata) <- NULL 

dopo aver eseguito il sottoinsiemi.

Ad esempio:

> mydata = data.frame(a=1:10, b=11:20) 
> mydata = mydata[-c(6, 8), ] 
> mydata 
    a b 
1 1 11 
2 2 12 
3 3 13 
4 4 14 
5 5 15 
7 7 17 
9 9 19 
10 10 20 
> rownames(mydata) <- NULL 
> mydata 
    a b 
1 1 11 
2 2 12 
3 3 13 
4 4 14 
5 5 15 
6 7 17 
7 9 19 
8 10 20 
+0

Ho appena eseguito questo comando e funziona !!! grazie!! – Pirate

+0

ancora una domanda. Devo eseguire il comando Null ogni volta che rimuovo le righe? – Pirate

+0

@Marine: non devi farlo ogni volta che rimuovi le righe, solo quando vuoi reimpostare i nomi delle righe (che potrebbero essere dopo aver effettuato più rimozioni) –

3

si potrebbe anche utilizzare il pacchetto data.table che non row.names negozio nello stesso modo (vedere il data.table intro, invece verrà stampata con il numero di riga .

si veda la sezione chiavi per lavori come data.table con nomi fila e chiavi

data.table eredita da data.frame, quindi una data.table è un data.frame se funzioni e pacakges accettano solo data.frames.

esempio

library(data.table) 

mydata <- data.table(mydata) 
mydata 
##  a b 
## 1: 1 11 
## 2: 2 12 
## 3: 3 13 
## 4: 4 14 
## 5: 5 15 
## 6: 6 16 
## 7: 7 17 
## 8: 8 18 
## 9: 9 19 
## 10: 10 20 

mydata = mydata[-c(6, 8), ] 
mydata 
##  a b 
## 1: 1 11 
## 2: 2 12 
## 3: 3 13 
## 4: 4 14 
## 5: 5 15 
## 6: 7 17 
## 7: 9 19 
## 8: 10 20 
Problemi correlati