Mostrando entradas con la etiqueta match. Mostrar todas las entradas
Mostrando entradas con la etiqueta match. Mostrar todas las entradas

lunes, 11 de mayo de 2015

ORDENAR DATA FRAME II. Ordenar filas



---
title: "Ordenar Data Frame II - Ordenar filas"
author: "Raúl Ortiz"
date: "Tuesday, May 05, 2015"
output: pdf_document
---

# Mediante el presente documento, veremos como reordenar las filas 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 cbind(), uno de los requisitos era que las filas de los DF que íbamos a unir estuvieran en el mismo orden.
Veamos que pasa si no están en el mismo orden.
```{r}
DatosTesPeso = read.table("PotatoTestigoFilOrdPeso.csv", header=T, sep="," , dec=".")
DatosTesNr = read.table("PotatoTestigoFilOrdNr.csv", header=T, sep="," , dec=".")
DatosTesPeso
View (DatosTesNr)
```
¿Qué orurre si unimos los DF tal y como están?
```{r}
DatosTotal = cbind(DatosTesPeso, DatosTesNr)
View (DatosTotal)
```
Los mas lógico parece ordenar el DF "DatosTesNr"" para que el orden de las observaciones coincida con el de las parcelas, tal y como ocurre en el DF "DatosTesPeso".
Para ordenar el DF siguiendo poniendo las observaciones de la parcela 1 en la primera posición y el de la 9 en la úlitma, utilizaremos el siguiente comando.
```{r}
DatosTesNr [order(DatosTesNr$Parcela), ]
DatosTesNr1 = DatosTesNr [order(DatosTesNr$Parcela), ]
DatosTesNr # Orden del DF al cargarlo
View (DatosTesNr1)
```
Ahora ya sí podríamos utilizar rbind()
```{r}
DatosTotal = cbind(DatosTesPeso, DatosTesNr1)
View (DatosTotal)
```
Este era un ejemplo fácil, porque el DF de referencia estaba ordenado según el orden creciente (del 1 al 9) de una variable numérica.
¿Cómo lo haríamos si la variable "Parcela" del DF de referencia no estuviera ordenado de forma creciente?
```{r}
DatosTesPeso = read.table("PotatoTestigoFilOrd2Peso.csv", header=T, sep="," , dec=".")
DatosTesNr = read.table("PotatoTestigoFilOrdNr.csv", header=T, sep="," , dec=".")
DatosTesPeso
View (DatosTesNr)
```
Ninguno de los DF está ordenado de la misma manera.
Vamos a ordenar el DF "DatosTesNr" según el orden de parcela que tiene el DF "DatosTesPeso"
```{r}
DatosTesNr[order(match(DatosTesNr[,3],DatosTesPeso[,3])),]
DatosTesNr2 = DatosTesNr[order(match(DatosTesNr$Parcela,DatosTesPeso$Parcela)),]

DatosTesPeso
View (DatosTesNr2)
```
Ahora, también podríamos utilizar rbind()
```{r}
DatosTotal2 = cbind(DatosTesPeso, DatosTesNr2)
View (DatosTotal2)
```
Otras opciones para ordenar un DF es por ejemplo en orden decreciente de una variable numérica.
```{r}
DatosTesNr
DatosTesNr [order(DatosTesNr$Parcela), ]
DatosTesNr [rev(order(DatosTesNr$Parcela)), ]
DatosTesNr [order(-DatosTesNr$Parcela), ]
```
También la puedo ordenar según el orden de dos variables, una tipo Factor y otra tipo numérica
```{r}
DatosTesNr
DatosTesNr [order(DatosTesNr$Variedad,DatosTesNr$Numero40), ]
```
Si quiero que una de las variables se ordene de forma decreciente, puedo recurrir el signo "-"
```{r}
DatosTesNr [order(DatosTesNr$Variedad,-DatosTesNr$Numero40), ]
```
Por último, también se puede ordenar con comandos de la librería dplyr
```{r}
library(dplyr)
DatosTesNr %>% arrange(Parcela)
DatosTesNr %>% arrange(Variedad,Numero40)
```