---
title: "Funciones de la familia apply()"
author: "R para muy principiantes - Raúl Ortiz"
date: "Tuesday, April 14, 2015"
output: pdf_document
---
# Mediante el presente documento, repasaremos algunas funciones de la familia apply()
Establezco el directorio de trabajo
```{r}
setwd("C:/Users/Raul Ortiz/Desktop/Proyectos R")
```
Importo los datos
```{r}
Datos = read.table("Potato.csv", header=T, sep="," , dec=".")
```
Estructura del comando apply
apply (DataFrame, Margen, Funcion, Argumentos)
Margen: 1 filas, 2 columnas
Queremos averiguar el peso total de cada muestra del ensayo, ya que nos han dado los datos de los pesos de las patatas de la muestra, clasificados por categoría.
```{r}
apply (Datos[ , 3:6], 1, sum)
Datos$PesoTotalMuestra = apply (Datos[ , 3:6], 1, sum)
head (Datos,3)
```
Para averiguar el peso total por categoría, sumaremos por columna (categorias) en vez de por filas (muestras)
```{r}
TotPesosCat = apply (Datos[ , 3:6], 2, sum)
TotPesosCat
```
Los que hayais visto el vídeo de Sumar filas y columnas, os habréis dado cuenta de que el resultado es el mismo que cuando utilizamos los comandos rowSums y colSums.
rowSums equivale a apply(DF, 1, sum)
rowMeans equivale a apply(DF, 1, mean)
colSums equivale a apply(DF, 2, sum)
colMeans equivale a apply(DF, 2, mean)
Pero es que con apply(), además de sumar, podemos hacer otras operaciones que vienen cargadas por defecto en R.
```{r}
getGroupMembers("Summary")
```
Así por ejemplo, podemos obtener el rango de los números de patatas por categorías.
```{r}
apply (Datos[ , 7:10], 2, min)
apply (Datos[ , 7:10], 2, max)
apply (Datos[ , 7:10], 2, range)
```
Hay además otras operaciones aritméticas que vienen cargadas por defecto, como la media (mean), la varianza (var), la desviación estándar (sd) o la mediana (median)
```{r}
apply (Datos[ , 7:10], 2, mean)
```
Tambien podemos personalizar la función.
Por ejemplo, vamos a pasar las unidades del peso de las sub-muestras de gramos a kilogramos. Para ello dividimos las mismas columnas de antes entre 1000.
```{r}
PesosCatKg = apply (Datos[ , 3:6], 2, function(x) x/1000)
head (PesosCatKg)
```
Si lo que queremos es tener el total por categoría en kg
```{r}
TotPesosCatKg = apply (Datos[ , 3:6], 2, function(x) sum(x)/1000)
TotPesosCatKg
```
No hay comentarios:
Publicar un comentario