Tipos de datos

chr <- c("árbol", "estepa", "ecosistema")
class(chr)
## [1] "character"
num <- c(1.2, 1.3, 2, 5)
class(num)
## [1] "numeric"
int <- c(3L, 200L)
class(int)
## [1] "integer"
factor <- as.factor(c("primera", "segunda", "tercera", "segunda", "azul"))
levels(factor)
## [1] "azul"    "primera" "segunda" "tercera"
Formato de base de datos
Variable 1 Variable 2 Variable 3 Variable 4
Observación 1 Dato Dato Dato Dato
Observación 2 . . . .
Observación 3 . . . .

Taller

Lectura de base de datos

library(readxl)

datos <- read_xlsx("Libro2_7.xlsx")
str(datos)
## tibble[,6] [989 × 6] (S3: tbl_df/tbl/data.frame)
##  $ especie    : chr [1:989] "F. Cascara" "F. Rojo" "F. Rojo" "F. Cascara" ...
##  $ proveedor  : chr [1:989] "Dona Dora" "Bayer" "Don Francisco" "Don Francisco" ...
##  $ finca      : chr [1:989] "La colina" "La colina" "La colina" "Subidero" ...
##  $ year       : chr [1:989] "2020" "2019" "2018" "2019" ...
##  $ Epoca      : chr [1:989] "III" "I" "II" "II" ...
##  $ rendimiento: num [1:989] 7660 5891 7750 7366 8413 ...
head(datos, n = 30)

Transformación de base de datos

Como las variables categoricas (de especie hasta época) estan en formato Caracter (chr), debemos cambiarlas a factor.

datos$especie <- as.factor(datos$especie)
datos$proveedor <- as.factor(datos$proveedor)
datos$finca <- as.factor(datos$finca)
datos$year <- as.factor(datos$year)
datos$Epoca <- as.factor(datos$Epoca)
str(datos)
## tibble[,6] [989 × 6] (S3: tbl_df/tbl/data.frame)
##  $ especie    : Factor w/ 4 levels "F. Cascara","F. Montano",..: 1 3 3 1 3 1 4 1 4 1 ...
##  $ proveedor  : Factor w/ 4 levels "Bayer","Don Francisco",..: 3 1 2 2 3 4 3 2 4 2 ...
##  $ finca      : Factor w/ 4 levels "El 45","La Clara",..: 3 3 3 4 1 3 4 4 4 3 ...
##  $ year       : Factor w/ 4 levels "2017","2018",..: 4 3 2 3 2 2 1 1 2 4 ...
##  $ Epoca      : Factor w/ 3 levels "I","II","III": 3 1 2 2 1 2 2 2 3 3 ...
##  $ rendimiento: num [1:989] 7660 5891 7750 7366 8413 ...

Tablas resúmen (media, mediana, y desviación estándar)

Tapply funciona para hacer tablas resúmen, se utiliza de esta manera: tapply(rendimiento, variable, estadisticos de tendencia)

Especie

x <- datos$rendimiento
mean.sd <- function(x) c(media = mean(x), 
                         sd = sd(x), 
                         mediana = median(x))

tapply(x, datos$especie, mean.sd)
## $`F. Cascara`
##     media        sd   mediana 
## 7115.4548  849.1135 7005.8500 
## 
## $`F. Montano`
##     media        sd   mediana 
## 7703.8556  915.3816 7635.2000 
## 
## $`F. Rojo`
##     media        sd   mediana 
## 7144.4598  907.2394 7047.2500 
## 
## $`F. Verde`
##     media        sd   mediana 
## 7792.6424  877.1483 7682.0000

Proveedor

tapply(x, datos$proveedor, mean.sd)
## $Bayer
##     media        sd   mediana 
## 6645.6145  657.6747 6582.7000 
## 
## $`Don Francisco`
##     media        sd   mediana 
## 7429.6936  633.8042 7370.1500 
## 
## $`Dona Dora`
##     media        sd   mediana 
## 8591.2462  656.3892 8603.3500 
## 
## $Monsanto2
##     media        sd   mediana 
## 7121.0578  675.2124 7070.1000

Finca

tapply(x, datos$finca, mean.sd)
## $`El 45`
##     media        sd   mediana 
## 7274.2553  904.3673 7189.2000 
## 
## $`La Clara`
##     media        sd   mediana 
## 7035.1858  875.6387 6958.0000 
## 
## $`La colina`
##     media        sd   mediana 
## 7410.3714  925.3438 7340.4000 
## 
## $Subidero
##     media        sd   mediana 
## 7839.1000  850.1089 7796.3500

Año

tapply(x, datos$year, mean.sd)
## $`2017`
##     media        sd   mediana 
## 7923.2114  866.7921 7814.5500 
## 
## $`2018`
##     media        sd   mediana 
## 7770.8282  826.0495 7635.2000 
## 
## $`2019`
##     media        sd   mediana 
## 7003.8993  823.3712 6938.5000 
## 
## $`2020`
##     media        sd   mediana 
## 6965.2255  818.0381 6842.1500

Época

tapply(x, datos$Epoca, mean.sd)
## $I
##     media        sd   mediana 
## 7251.5240  919.3453 7094.3500 
## 
## $II
##     media        sd   mediana 
## 7782.3478  915.2799 7753.0000 
## 
## $III
##    media       sd  mediana 
## 7184.300  857.239 7043.300

Histograma por Especie F. Verde

a <- subset(datos, subset = especie == "F. Verde")
hist(a$rendimiento)

data.frame(media = mean(x), mediana = median(x), sd = sd(x))

Ciclograma

library(dplyr)
library(ggplot2)

datos %>% 
  add_count(especie) %>% 
  mutate(n = n/n()*100) %>% 
  group_by(especie, n) %>% 
  summarise() %>% 
  rename("N" = n, 
         "Especie" = especie) %>%   
  ggplot(., aes(x = "", y = -N, fill = Especie)) + 
  geom_bar(stat = "identity", color = "black") + 
  coord_polar("y") + theme_void() + 
  ggtitle("Ciclograma: Aporte por especie") +
  theme(plot.title = element_text(hjust = 0.5))