lunes, 11 de mayo de 2015

ORDENAR DATA FRAME I. Ordenar columnas


---
title: "Odenar Data Frame I - Ordenar columnas"
author: "Raúl Ortiz"
date: "Monday, May 04, 2015"
output: pdf_document
---

# Mediante el presente documento, veremos como reordenar las columnas de un Data Frame.

Establezco el directorio de trabajo
```{r}
setwd("C:/Users/Raul Ortiz/Desktop/Proyectos R")
```
En el vídeo como "Unir Data Frames" vimos que para utilizar el comando rbind(), uno de los requisitos era que las columnas o variables de los DF que íbamos a unir, tuvieran los mismos nombres y en el vídeo "Renombrar variables" aprendimos a cambiar los nombres para facilitar este proceso.
Dije también en el vídeo que otro de los requisitos para utilizar el comando rbind() es que las columnas estén ordenados de la misma manera, pero vamos a ver si esto es así o no.
```{r}
DatosTesPeso = read.table("PotatoTestigoPeso.csv", header=T, sep="," , dec=".")
DatosTdoPeso = read.table("PotatoTratadoPeso3.csv", header=T, sep="," , dec=".")
names (DatosTesPeso)
names (DatosTdoPeso)
```
Los nombres de las variables son los mismos, pero no el orden en el que se presentan.
Veamos que pasa cuando ejecutamos rbind() en estas condiciones.
```{r}
DatosPesos = rbind(DatosTesPeso, DatosTdoPeso)
View (DatosPesos)
```
Comprobamos que R ha identificado los nombres de las variables o columnas y los ha reordenado para que coincidan, antes de unirlos.
En caso de que por cualquier motivo queramos dar un orden específico al DF, tenemos varias opciones.

Opción 1
Ordenar por el número de índice de las columnas. - Ya hablamos de los índices en el vídeo "Filtrar datos I"
```{r}
names (DatosTesPeso)
names (DatosTdoPeso)
DatosTdoPeso1 = DatosTdoPeso [ , c(3,2,1,7,6,5,4)]
names (DatosTdoPeso1)
```

Opción 2
Utilizar la función subset() - Ya hablamos de este comando en el vídeo "Filtrar datos II"
```{r}
DatosTdoPeso2 = subset (DatosTdoPeso, select=c(3,2,1,7,6,5,4))
names (DatosTdoPeso2)
```

Opción 3
Utilizar la función del paquete dplyr - Ya hablamos de este comando en el vídeo "Filtrar datos III"
```{r}
library(dplyr)
DatosTdoPeso3 = DatosTdoPeso %>% select(Tratamiento, Variedad, Parcela, Peso40, Peso41a45, Peso46a60, PesoMas61)
names (DatosTdoPeso3)
```

Opción 4
Utilizamos el orden de las variables o columnas del Data Frame referencia, para ordenar el DF objetivo.
```{r}
DatosTdoPeso4 = DatosTdoPeso [ , c(names(DatosTesPeso))]
names (DatosTdoPeso4)
```

Si en vez de ordenar las columnas, según el orden establecido en otro DF, queremos hacerlo en orden alfabético.
```{r}
DatosTdoPesoAZ = DatosTdoPeso [ , order(c(names(DatosTdoPeso)))]
names (DatosTdoPesoAZ)
```
En orden alfabético reverso.
```{r}
DatosTdoPesoZA = DatosTdoPeso [ , rev(order(c(names(DatosTdoPeso))))]
names (DatosTdoPesoZA)
```

No hay comentarios:

Publicar un comentario