Hoja 1

1.1. Usando dplyr

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyr)

Actividad 1

options(digits=3)
set.seed(2046)
# Generando números de la distribución normal. 
Normal <- rnorm(120,5,0.85)
#Generando números de la distribución binomial.
Binomial <- rbinom(120,20,0.8)
# Generando números de l adistribución Poisson.
Poisson <- rpois(120,10.5)
# Generando una muestra con reemplazo 
reemplazo <- sample.int(1:300, 120, replace = TRUE)

Usando librería purrr

library(purrr)
# Generando números de la distribución Bernoulli
bernoulli <- rbernoulli(120, p = 0.75)
## cambiando etiquetas en el vector de booleanos
index_false = which(bernoulli==FALSE)
index_true = which(bernoulli==TRUE)
bernoulli[index_true] = 'Presente'
bernoulli[index_false] = 'Ausente'
#Comprobamos que la variable booleana FALSE haya cambiado a Ausente y TRUE a Presente
bernoulli[1:10]
##  [1] "Ausente"  "Ausente"  "Presente" "Presente" "Presente" "Presente"
##  [7] "Ausente"  "Presente" "Presente" "Presente"
# Generando un factor de 3 niveles
plantas <- gl(3,40, labels= c("Sana"="S", "Parcialmente enferma"="PA", "Muy afectada"="MA"))

# Generando un factor de 2 niveles con distribución uniforme
d_uniforme <- runif(120, min=0, max= 1.2)
uniforme <- if_else(d_uniforme < 0.5, "FO","FI")

Actividad 2

library(pander) #Visualizar tablas
# Creación de un marco de datos
tib.c <- data.frame("Biomasa"= Normal,"Flores.r"=Binomial, "Flores.d"=Poisson, "Hoja.d"=reemplazo, "Plaga"=bernoulli, "Estatus"=plantas, "Fertilizacion"=uniforme)
pander(head(tib.c))
Biomasa Flores.r Flores.d Hoja.d Plaga Estatus Fertilizacion
4.219 18 8 1 Ausente S FO
5.469 16 16 1 Ausente S FO
3.59 15 11 1 Presente S FO
6.208 17 8 1 Presente S FI
6.167 13 15 1 Presente S FO
5.13 15 8 1 Presente S FI
# Revisando dimensión de los datos
dimension <- dim(tib.c)
# Revisando la estrutura de los datos
estructura <- str(tib.c)
## 'data.frame':    120 obs. of  7 variables:
##  $ Biomasa      : num  4.22 5.47 3.59 6.21 6.17 ...
##  $ Flores.r     : int  18 16 15 17 13 15 15 18 17 18 ...
##  $ Flores.d     : int  8 16 11 8 15 8 12 8 14 10 ...
##  $ Hoja.d       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Plaga        : chr  "Ausente" "Ausente" "Presente" "Presente" ...
##  $ Estatus      : Factor w/ 3 levels "S","PA","MA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Fertilizacion: chr  "FO" "FO" "FO" "FI" ...
# Revisando la clase de los datos
clase <- class(tib.c)
#Revisando el nombre de las variables de los datos
variables <- names(tib.c)
# Revisando datos faltantes en los datos
faltantes <- is.na(tib.c)
Ahora se realizara un conjunto de datos con faltantes, se llamara tib.i
tamaño <- nrow(tib.c)*0.75
tib.i <-sample_n(tib.c,size=tamaño)
dim(tib.i)
## [1] 90  7
tib.i$Biomasa[14]= NA
tib.i$Hoja.d[87]= NA
tib.i[14,]
##    Biomasa Flores.r Flores.d Hoja.d   Plaga Estatus Fertilizacion
## 14      NA       19        9      1 Ausente      MA            FO
tib.i[87,]
##    Biomasa Flores.r Flores.d Hoja.d   Plaga Estatus Fertilizacion
## 87    5.87       13        9     NA Ausente      PA            FI

Actividad 3

# Seleccionamos la variable Biomasa para lo datos completos (tib.c) 
biomasa <-tib.c %>% select(Biomasa)
# Seleccionamos de la tercera a la sexta variable de tib.c
col_3.6 <-tib.c %>% select(3:6)
# No selecione desde la tercera hasta la sexta variable de tib.c
col_1.2.7 <-tib.c %>% select(!3:6)
# Selección de variables que no finalizan con .d
var.d <- tib.i %>% select(!ends_with(".d"))
# Selección de variables que inician con Fl
var_Fl <- tib.i %>%  select(starts_with("Fl"))
# Selección de variables con 2 condiciones
var_2cond <-tib.i %>% select(starts_with("Fl")& ends_with(".d"))
# Selección de una variable agrupandola con Estatus
var_estatus <- tib.c %>% select(Biomasa, Estatus) %>% group_by(Estatus)
# Ordenando de mayor a menor una variable
bio_estatus <-(arrange(var_estatus, desc(Biomasa),.by_group =TRUE))
# Filtrar variables que inician con Flores para la condicion MA
Flores <-tib.c %>% filter(Estatus=="MA") %>% select(starts_with("Flores"), Estatus)
# Filtrar Biomasa > 5 gramos
biomasa_sup5 <-tib.c %>% filter(Biomasa>5) %>% select(Biomasa)
# Filtrar por fertilización organica (FO) y estado parcialmente afectado (PA)
FO_PA <- tib.c %>% select(Fertilizacion, Estatus) %>% filter(Fertilizacion=="FO", Estatus== "PA")
#Filtrar por fertilización inorganica (FI) o parcialmente afectadas (PA)
FI_o_PA <- tib.c %>% select (Fertilizacion, Estatus) %>% filter(Fertilizacion=="FI"|Estatus=="PA")
# Filtrar por Flores.d > mediana y Plaga
Fl.d_Pl <- tib.c %>% select(Flores.d, Plaga) %>% filter(Flores.d>median(Flores.d))
# Filtar variable con datos faltantes > mediana y Plaga
Falt_Pl <- tib.i %>% select(Hoja.d, Plaga) %>% filter(Hoja.d>median(Hoja.d,na.rm = TRUE))
# Asignar a vector
v1= c(tib.c$Flores.d,tib.c$Hoja.d)
v2= c (quantile(tib.c$Flores.d,0.25), quantile(tib.c$Hoja.d,0.75))
v1_v2 <- tib.c %>% filter(v1[[1]]>v2[[1]],v1[[2]]>v2[[2]])
# Creación de marco de datos con variables cuantitativas estandarizadas
str(tib.c)
## 'data.frame':    120 obs. of  7 variables:
##  $ Biomasa      : num  4.22 5.47 3.59 6.21 6.17 ...
##  $ Flores.r     : int  18 16 15 17 13 15 15 18 17 18 ...
##  $ Flores.d     : int  8 16 11 8 15 8 12 8 14 10 ...
##  $ Hoja.d       : int  1 1 1 1 1 1 1 1 1 1 ...
##  $ Plaga        : chr  "Ausente" "Ausente" "Presente" "Presente" ...
##  $ Estatus      : Factor w/ 3 levels "S","PA","MA": 1 1 1 1 1 1 1 1 1 1 ...
##  $ Fertilizacion: chr  "FO" "FO" "FO" "FI" ...
# La variable biomasa es continua y debe estandarizarse con score z
tibc_mean <- mean(tib.c$Biomasa)
tibc_sd <- sd(tib.c$Biomasa)
score_z <- (tib.c$Biomasa - mean(tib.c$Biomasa))/sd(tib.c$Biomasa)
# Ahora estandarizamos con minimax las variables discretas (Flores.r, Flores.d y Hoja-d)
minmax_norm <- function(x) {(x - min(x)) / (max(x) - min(x))}
tibc_norm <- as.data.frame(lapply(tib.c[2:4], minmax_norm))
# Creación dataframe
tib.e <- data.frame(Biomasa=score_z,tibc_norm)
pander(head(tib.e))
Biomasa Flores.r Flores.d Hoja.d
-0.9361 0.7143 0.3571 NA
0.5358 0.4286 0.9286 NA
-1.677 0.2857 0.5714 NA
1.407 0.5714 0.3571 NA
1.359 0 0.8571 NA
0.1371 0.2857 0.3571 NA

Actividad 4

#Creación nueva variable
tib.c <-tib.c %>% mutate(Div_Flores = Flores.r/Flores.d) %>% select(Biomasa, Flores.r,Flores.d, Div_Flores, everything())
# Selección de la anterior variable y agrupado con plaga
DvFl_Pl <-tib.c %>% select(Div_Flores,Plaga) %>% group_by(Plaga) %>% mutate( rangomin= min_rank(desc(Div_Flores)))
# Renombrar variables con Flores
renombrar_Fl<- rename(tib.c,Flores_3r=Flores.r,Flores_dpr=Flores.d)
# Renombrar encabezados a mayúscula de tibble "tib.e"
renombrar_MAY<-rename_with(tib.e,toupper)
# Renombrar encabezados a minúscula del tibble "tib.e"
renombrar_minus <- rename_with(tib.e, ~ tolower(gsub(".", "_", .x, fixed = TRUE)))

Actividad 5

# Media y número de datos de la variable Biomasa del tibble con datos faltantes
d_bio <-tib.i %>% select(Biomasa) %>% summarise(n_datos=n(),media=mean(Biomasa,na.rm=TRUE))
pander(d_bio)
n_datos media
90 4.931
# Media y número de datos de variable Fertilización del tibble con datos faltantes
d_fert <-tib.i %>% select(Biomasa,Fertilizacion) %>% group_by(Fertilizacion) %>% summarise(n_datos=n(), media=mean(Biomasa,na.rm=TRUE))
pander(d_fert)
Fertilizacion n_datos media
FI 42 5.068
FO 48 4.809
# Datos con cuantiles 
quart<-tib.i %>% select(Biomasa,Fertilizacion) %>% group_by(Fertilizacion) %>% summarise(n_datos=n(),
          q_10 = quantile(Biomasa, 0.10, na.rm = T),
          q_20 = quantile(Biomasa, 0.10, na.rm = T),
          q_30 = quantile(Biomasa, 0.10, na.rm = T),
          q_40 = quantile(Biomasa, 0.10, na.rm = T),
          q_50 = quantile(Biomasa, 0.10, na.rm = T))
pander(quart)
Fertilizacion n_datos q_10 q_20 q_30 q_40 q_50
FI 42 4.1 4.1 4.1 4.1 4.1
FO 48 3.872 3.872 3.872 3.872 3.872
## Summarise con estadisticas
sta<-tib.i %>% select(Plaga, Biomasa,Fertilizacion) %>% group_by(Plaga, Fertilizacion) %>% summarise(
  media = mean(Biomasa, na.rm = T),
  mediana = median(Biomasa, na.rm = T),
  maximo = max(Biomasa, na.rm = T),
  minimo = min(Biomasa, na.rm = T),
  desv_tipica = ,sd(Biomasa, na.rm = T),
  desv_media = mad(Biomasa, na.rm = T),
  media_truncada_10 = mean(Biomasa, tri = 0.1, na.rm = T),
  varianza = var(Biomasa, na.rm = T))
## `summarise()` has grouped output by 'Plaga'. You can override using the `.groups` argument.
pander(sta)
Table continues below
Plaga Fertilizacion media mediana maximo minimo
Ausente FI 5.093 5.271 6.327 2.992
Ausente FO 4.876 4.927 5.881 3.708
Presente FI 5.058 4.949 6.858 3.36
Presente FO 4.783 4.744 7.088 3.293
sd(Biomasa, na.rm = T) desv_media media_truncada_10 varianza
0.9684 0.8859 5.179 0.9377
0.6395 0.5097 4.891 0.409
0.8862 0.7842 5.05 0.7854
0.8665 0.972 4.736 0.7508
## Summarise con estadisticas + filter
sta_filt <-tib.i %>% select(Plaga, Biomasa,Fertilizacion, Estatus) %>% filter(Estatus == 'S')  %>% group_by(Plaga, Fertilizacion) %>% summarise(
  media = mean(Biomasa, na.rm = T),
  mediana = median(Biomasa, na.rm = T),
  maximo = max(Biomasa, na.rm = T),
  minimo = min(Biomasa, na.rm = T),
  desv_tipica = ,sd(Biomasa, na.rm = T),
  desv_media = mad(Biomasa, na.rm = T),
  media_truncada_10 = mean(Biomasa, tri = 0.1, na.rm = T),
  varianza = var(Biomasa, na.rm = T))
## `summarise()` has grouped output by 'Plaga'. You can override using the `.groups` argument.
pander(sta_filt)
Table continues below
Plaga Fertilizacion media mediana maximo minimo
Ausente FI 5.068 4.961 6.327 4.022
Ausente FO 5.217 5.142 5.881 4.887
Presente FI 5.041 5.222 6.858 3.36
Presente FO 4.817 4.924 6.352 3.59
sd(Biomasa, na.rm = T) desv_media media_truncada_10 varianza
1.026 1.049 5.068 1.052
0.4003 0.319 5.217 0.1603
1.281 1.462 5.041 1.642
0.7919 0.8957 4.789 0.627
## estadisticas sin datos faltantes 
sta_na <-drop_na(tib.i) %>% select(Plaga, Biomasa,Fertilizacion, Estatus) %>% filter(Estatus == 'S')  %>% group_by(Plaga, Fertilizacion) %>% summarise(
  media = mean(Biomasa, na.rm = T),
  mediana = median(Biomasa, na.rm = T),
  maximo = max(Biomasa, na.rm = T),
  minimo = min(Biomasa, na.rm = T),
  desv_tipica = ,sd(Biomasa, na.rm = T),
  desv_media = mad(Biomasa, na.rm = T),
  media_truncada_10 = mean(Biomasa, tri = 0.1, na.rm = T),
  varianza = var(Biomasa, na.rm = T))
## `summarise()` has grouped output by 'Plaga'. You can override using the `.groups` argument.
pander(sta_na)
Table continues below
Plaga Fertilizacion media mediana maximo minimo
Ausente FI 5.068 4.961 6.327 4.022
Ausente FO 5.217 5.142 5.881 4.887
Presente FI 5.041 5.222 6.858 3.36
Presente FO 4.817 4.924 6.352 3.59
sd(Biomasa, na.rm = T) desv_media media_truncada_10 varianza
1.026 1.049 5.068 1.052
0.4003 0.319 5.217 0.1603
1.281 1.462 5.041 1.642
0.7919 0.8957 4.789 0.627
## filtrando datos %in%

da_in <-tib.i %>% filter(Estatus%in%c('MA', 'PA')) %>% head()
pander(da_in)
Biomasa Flores.r Flores.d Hoja.d Plaga Estatus Fertilizacion
7.088 18 8 1 Presente MA FO
3.708 18 12 1 Ausente PA FO
6.253 16 13 1 Presente MA FI
4.671 17 9 1 Presente MA FI
5.154 15 4 1 Presente MA FO
4.596 14 6 1 Ausente PA FO
## complete cases
tib.i_sin_na = tib.i[complete.cases(tib.i),]
tib.i_sin_na %>% head() %>% pander()
Biomasa Flores.r Flores.d Hoja.d Plaga Estatus Fertilizacion
7.088 18 8 1 Presente MA FO
3.708 18 12 1 Ausente PA FO
6.253 16 13 1 Presente MA FI
4.671 17 9 1 Presente MA FI
5.154 15 4 1 Presente MA FO
4.596 14 6 1 Ausente PA FO
# eliminando conteo de flores
tib.i %>% select(-starts_with('Flores')) %>% head() %>% pander()
Biomasa Hoja.d Plaga Estatus Fertilizacion
7.088 1 Presente MA FO
3.708 1 Ausente PA FO
6.253 1 Presente MA FI
4.671 1 Presente MA FI
5.154 1 Presente MA FO
4.596 1 Ausente PA FO
## seleccionando variables que contengan .d
tib.i %>% select(contains('.d')) %>% head() %>% pander()
Flores.d Hoja.d
8 1
12 1
13 1
9 1
4 1
6 1
### reordenando tabla

tib.i %>% select(contains('Flores'), everything()) %>% head() %>% pander()
Flores.r Flores.d Biomasa Hoja.d Plaga Estatus Fertilizacion
18 8 7.088 1 Presente MA FO
18 12 3.708 1 Ausente PA FO
16 13 6.253 1 Presente MA FI
17 9 4.671 1 Presente MA FI
15 4 5.154 1 Presente MA FO
14 6 4.596 1 Ausente PA FO