2012-09-11 46 views
6

Tengo una dificultad para reducir correctamente los números de fila en un marco de datos.Cómo reducir automáticamente los números de fila en el marco de datos R al eliminar filas en R

Tengo un conjunto de datos llamado "mydata" que importé de un archivo de texto usando R. El marco de datos tiene alrededor de 200 filas con 10 columnas.

Quité el número de la fila 3, 7, 9, 199 mediante el uso de:

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

Cuando ejecuto este comando, la fila 3,7,9,199 han desaparecido de la lista, pero el número de fila doesn' t se reduce automáticamente a 196, pero se mantiene en 200. Siento que de alguna manera estos números de fila se adjuntan a cada "fila" como parte del marco de datos?

¿Cómo puedo solucionar este problema?

Lo que me desconcierta aún más es que cuando importo el archivo de texto usando R Studio, no tengo ningún problema. (Veo 196 cuando ejecuto el comando anterior). Pero cuando utilizo R, no puedo cambiar el número de fila en un marco de datos que coincida con el número real de filas en la lista.

¿Alguien puede decirme cómo solucionar esto?

Respuesta

9

simple que puede hacer:

rownames(mydata) <- NULL 

después de realizar la creación de subconjuntos.

Por ejemplo:

> 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

que acaba de ejecutar este comando y funciona !!! ¡¡gracias!! – Pirate

+0

una pregunta más, sin embargo. ¿Debo ejecutar el comando Null cada vez que elimino filas? – Pirate

+0

@Marine: no tienes que hacerlo cada vez que eliminas filas, solo cuando quieras restablecer los nombres de las filas (que pueden ser posteriores a las múltiples eliminaciones) –

3

También es posible usar el paquete data.table cuales no row.names tiendas de la misma manera (ver el data.table intro, sino que imprimirá con el número fila.

véase la sección sobre teclas de cómo funciona la data.table con nombres de las filas y llaves

data.table hereda de data.frame, por lo que un data.table es un data.frame si las funciones y Pacakges sólo aceptan data.frames.

por ejemplo

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 
Cuestiones relacionadas