Hola.
Los dataframes son una forma muy útil de organizar los datos en R. Pero siempre me encuentro con dificultades para trabajar con ellos, sobretodo para hacer cosas triviales, por ejemplo ¿Como se crea o se borra una columna?
Usemos el dataframe dades del post anterior.
Para ver una columna de un dataframe basta con usar $, hay que poner
> nombredf$nombrecolumna > dades$datos1
teniendo en cuenta esto podemos trabajar con estos datos como si fueran un vector…
> mean(dades$datos1)
[1] 51.877
…nos da lo mismo que nos daba el summary de otro post anterior.
Pero ¿Y si ahora queremos añadir otra columna al dataframe?
Primero tenemos que asegurarnos de que la longitud del dataframe sea la misma que la de la nueva columna.
> length(dades$datos1)
[1] 40
le pido la longitud sólo de una de las columnas, por que al ser un dataframe todas tienen que medir lo mismo.
Creamos la una nueva columna de 40 elementos
> nueva.col<-c(seq(1:40))
y la pegamos al dataframe
> dades$factor3<-nueva.col
si es un factor se lo decimos
> dades$factor3<-as.factor(dades$factor3)
y ya está
> summary(dades)
factor1 factor2 datos1 datos2 datos3 factor3
a:20 1:10 Min. : 0.32 Min. : 12.17 Min. : 1.00 1: 1
b:20 2:10 1st Qu.:25.35 1st Qu.:263.51 1st Qu.:10.75 2: 1
3:10 Median :54.05 Median :476.13 Median :30.00 3: 1
4:10 Mean :51.88 Mean :501.87 Mean :30.00 4: 1
3rd Qu.:76.39 3rd Qu.:725.57 3rd Qu.:49.25 5: 1
Max. :99.96 Max. :996.24 Max. :59.00 6:1
(Other):34
Para eliminarla es un poco raro. Sabemos que para ver un elemento de un vector usamos los corchetes
> nueva.col[3]
[1] 3
nos muestra el elemento nº3 del vector nueva.col
para ver una columna, fila o celda de un dataframe los corchetes funcionan parecido [fila,columna], para ver el contenido de la segunda columna:
> dades[,2]
[1] 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4
[39] 4 4
Levels: 1 2 3 4
Si queremos borrar una columna tenemos que usar el signo «-«, por ejemplo, para borrar la columna factor3 (que es la 6ª) del dataframe:
> dades[,-6]
Esto nunca me ha parecido muy elegante, pero no he encontrado otra forma de hacerlo. Si alguien sabe una forma mejor que lo diga, o mejor, que lo escriba.
Saludos.
otra forma de eliminar es de la siguinte forma
dades$factor3<-NULL
saludos
Hola.
Muchas gracias por el comentario Iván.
Esto es mucho más fácil que ir contando columnas.
Saludos.
como hago para agregar una fila al final del data frame??
saludos
Solo tienes que decirle a R que quieres poner en esa fila.
Por ejemplo, en el dataframe de la entrada anterior, 40 observaciones en 5 columnas hariamos:
fila.nueva<-c("a","b","c","d","e")
dades[41,]<-fila.nueva
Esto le dice a R en la fila 41 del dataframe pon el vector fila.nueva. Ojo, por que si hay factores en el dataframe, los valores del vector fila.nueva en esas columnas tendran que tener valores que esten en los niveles del factor.
Más cosas sobre dataframes aquí.