Mostrando entradas con la etiqueta rbind. Mostrar todas las entradas
Mostrando entradas con la etiqueta rbind. 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)
```

UNIR DATA FRAMES. rbind() y cbind()


---
title: "Unir DataFrames. rbind() y cbind()"
author: "Raúl Ortiz"
date: "Tuesday, April 21, 2015"
output: pdf_document
---

# Mediante el presente documento, veremos como unir DataFrames mediante los comandos rbind() y cbind().

Establezco el directorio de trabajo
```{r}
setwd("C:/Users/Raul Ortiz/Desktop/Proyectos R")
```
Supongamos que los datos nos llegan por partes, es decir, que nos llegan de las parcelas tratadas los pesos por un lado y el número de patatas por otro. Lo mismo con los datos de las parcelas testigo. En total, cuatro tablas con datos
```{r}
DatosTesPeso = read.table("PotatoTestigoPeso.csv", header=T, sep="," , dec=".")
DatosTesNr = read.table("PotatoTestigoNr.csv", header=T, sep="," , dec=".")
DatosTdoPeso = read.table("PotatoTratadoPeso.csv", header=T, sep="," , dec=".")
DatosTdoNr = read.table("PotatoTratadoNr.csv", header=T, sep="," , dec=".")
```
Unimos los DF con los datos de los pesos del Testigo con los del Tratado. rbind = unir agregando filas, cuando sabemos que los nombres de las columnas (variables), son iguales y están en el mismo orden.
```{r}
names (DatosTesPeso)
names (DatosTdoPeso)
DatosPesos = rbind(DatosTesPeso, DatosTdoPeso)
View (DatosPesos)
```
Hacemos lo mismo con los datos referentes al número de patatas de las parcelas Testigo y Tratadas.
Comprobamos antes los nombres y el orden de las columnas.
```{r}
names (DatosTesNr)
names (DatosTdoNr)
DatosNumero = rbind(DatosTesNr, DatosTdoNr)
View (DatosNumero)
```
Ahora sólo nos falta unir los datos referentes al número de patatas por muestra.
Vemos que las observaciones de cada parcela se han anotado en el mismo orden, la primera fila corresponde a la parcela 1 y la última a la 18, en ambos DF, el de DatosPesos y el de DatosNumero.
Podemos proceder al la unión.
```{r}
DatosTotal = cbind(DatosPesos, DatosNumero)
View (DatosTotal)
```
Observamos que las columnas Tratamiento, Variedad y Parcela se encuentran repetidas.
Lo podemos solucionar uniendo sólo las columnas que nos interesan.
```{r}
DatosTotal = cbind(DatosPesos, DatosNumero[ , 4:7])
View (DatosTotal)
```