\[\color{blue}{Usando~dplyr}\] Usando la funcion set.seed(20) y colocando sus dos ultimos numeros de cedula en los espacios, realice las siguientes actividades: :
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.5 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.0.2 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
set.seed(2077)
\[\color{blue}{Actividad~1}\] Genere una muestra de tamaño 120 de la distribucion normal con media 5, desviacion estandar 0.85. Use solo dos numeros decimales (rnorm()):
set.seed(2077)
biomasa <- rnorm(120, 5, 0.85)
head(biomasa)
## [1] 5.298067 4.391265 5.742773 5.525798 5.733124 4.740585
Genere una muestra de tamaño 120 de la distribucion binomial con parametros 0.8 (probabilidad) y 20 (ensayos independientes) (rbinom())
set.seed(2077)
flores.r <- rbinom(120, 20, 0.8)
flores.r
## [1] 15 17 17 16 14 16 15 17 14 15 17 17 16 12 19 13 14 15 17 17 16 17 18 14 17
## [26] 16 17 19 18 16 17 16 19 15 17 16 12 13 13 12 15 17 11 14 15 16 18 17 16 16
## [51] 16 15 17 15 14 18 14 14 17 14 16 16 14 12 14 13 13 16 14 19 14 14 12 17 18
## [76] 15 15 17 15 17 15 15 16 19 16 17 19 12 19 16 18 17 16 17 16 16 13 19 12 15
## [101] 14 18 18 12 18 14 17 14 17 19 16 13 13 15 17 16 16 16 17 17
Genere una muestra de tamaño 120 de la distribucion Poisson con parametro 10.5 (media) (rpois()):
set.seed(2077)
flores.d <- rpois(120, 10.5)
flores.d
## [1] 11 8 10 8 9 9 3 11 9 9 14 11 5 9 17 7 11 13 12 7 8 11 16 14 10
## [26] 4 16 7 9 9 12 9 6 8 16 17 13 6 13 13 4 15 9 10 8 18 13 8 10 11
## [51] 11 8 10 10 9 13 4 10 13 9 12 10 7 6 8 6 10 11 15 18 7 13 8 7 8
## [76] 4 11 4 8 12 12 6 9 10 9 10 11 14 12 9 11 10 9 13 8 10 5 6 6 7
## [101] 9 16 10 12 11 11 6 10 11 13 9 10 7 7 20 10 12 12 13 11
Genere una muestra con reemplazo de tamaño 120 de una secuencia de 300 numeros(sample.int()):
set.seed(2077)
hojas.d <- sample.int(300, 120, replace = TRUE)
hojas.d
## [1] 280 169 277 56 73 153 265 72 155 100 44 153 116 4 112 136 79 142
## [19] 16 24 232 235 106 185 289 280 208 225 251 111 237 145 106 200 127 134
## [37] 243 148 11 10 286 152 160 197 158 38 33 230 156 14 289 275 116 43
## [55] 121 90 4 298 28 47 63 141 33 243 72 154 74 217 94 79 120 124
## [73] 188 51 58 189 174 257 230 205 142 144 30 222 155 243 93 208 282 141
## [91] 161 101 66 202 121 58 170 87 36 284 240 155 277 37 48 155 112 47
## [109] 132 109 77 33 257 99 276 125 133 201 104 23
Usando la librería purrr genere una muestra de la distribución de Bernoulli de tamaño 120 y parámetro 0.75 (probabilidad) (rbernoulli()) y cambie el FALSE (ausente) y el TRUE por (presente):
library(purrr)
plaga <- rbernoulli(120, 0.75)
plaga<- ifelse(plaga[] == TRUE, "Presente", "Ausente")
head(plaga)
## [1] "Presente" "Ausente" "Presente" "Presente" "Presente" "Presente"
Genere tres niveles de un factor, cada uno con 40 datos y etiquételos con (S) para identificar la planta (sana), (PA) para las plantas parcialmente afectadas y (MA) para las muy afectadas. Use la función (gl()):
estatus <- gl(3, 40, labels = c("S","PA", "MA"))
estatus
## [1] S S S S S S S S S S S S S S S S S S S S S S S S S
## [26] S S S S S S S S S S S S S S S PA PA PA PA PA PA PA PA PA PA
## [51] PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA PA
## [76] PA PA PA PA PA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA
## [101] MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA MA
## Levels: S PA MA
Genere dos niveles de un factor usando la distribución uniforme con parámetros 0 y 1.2, ponga para cada datos a generar de los 120 la condición de si el número generado es menor a 0.5, los etiquetamos como (FO) para asociarlo a fertilización orgánica, de lo contrario, use (FI) para asociarlo a fertilización inorgánica. Use la función (runif()). Si lo desea use la función (ifelse()) o (if else()) para condicionar:
set.seed(2077)
datos <- runif(120, 0, 1.2)
fertilizacion <- ifelse(datos[] < 0.5, "FO", "FI")
fertilizacion
## [1] "FI" "FO" "FO" "FI" "FI" "FI" "FI" "FO" "FI" "FI" "FO" "FO" "FI" "FI" "FO"
## [16] "FI" "FI" "FI" "FO" "FO" "FI" "FO" "FO" "FI" "FO" "FI" "FO" "FO" "FO" "FI"
## [31] "FO" "FI" "FO" "FI" "FO" "FI" "FI" "FI" "FI" "FI" "FI" "FO" "FI" "FI" "FI"
## [46] "FI" "FO" "FO" "FI" "FI" "FI" "FI" "FO" "FI" "FI" "FO" "FI" "FI" "FO" "FI"
## [61] "FI" "FI" "FI" "FI" "FI" "FI" "FI" "FI" "FI" "FO" "FI" "FI" "FI" "FO" "FO"
## [76] "FI" "FI" "FO" "FI" "FO" "FI" "FI" "FI" "FO" "FI" "FO" "FO" "FI" "FO" "FI"
## [91] "FO" "FO" "FI" "FO" "FI" "FI" "FI" "FO" "FI" "FI" "FI" "FO" "FO" "FI" "FO"
## [106] "FI" "FO" "FI" "FO" "FO" "FI" "FI" "FI" "FI" "FO" "FI" "FI" "FI" "FO" "FO"
Con los datos generados en la actividad 1 desarrolle la siguiente actividad:
\[\color{blue}{Actividad~2}\] Construya un marco de datos (data.frame()) o una tableta (tibble()) con todas la variables antes generadas y asigne respectivamente los nombres de variable: Biomasa(gramos), Flores.r (conteo de flores en tres ramas), Flores.d (conteo de flores desprendidas), Hojas.d (conteo de hojas desprendidas), Plaga , Estatus y Fertilización:
tib.c <-data.frame(biomasa, flores.r, flores.d, hojas.d, plaga, estatus, fertilizacion)
head(tib.c)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 5.298067 15 11 280 Presente S FI
## 2 4.391265 17 8 169 Ausente S FO
## 3 5.742773 17 10 277 Presente S FO
## 4 5.525798 16 8 56 Presente S FI
## 5 5.733124 14 9 73 Presente S FI
## 6 4.740585 16 9 153 Presente S FI
Revise del objeto creado su dimensión (dim()), su estructura con (str()) o (glimpse()) , la clase (class()), los nombres en las variables (names()), la presencia de faltantes (is.na()):
dim(tib.c)
## [1] 120 7
str(tib.c)
## 'data.frame': 120 obs. of 7 variables:
## $ biomasa : num 5.3 4.39 5.74 5.53 5.73 ...
## $ flores.r : int 15 17 17 16 14 16 15 17 14 15 ...
## $ flores.d : int 11 8 10 8 9 9 3 11 9 9 ...
## $ hojas.d : int 280 169 277 56 73 153 265 72 155 100 ...
## $ plaga : chr "Presente" "Ausente" "Presente" "Presente" ...
## $ estatus : Factor w/ 3 levels "S","PA","MA": 1 1 1 1 1 1 1 1 1 1 ...
## $ fertilizacion: chr "FI" "FO" "FO" "FI" ...
class(tib.c)
## [1] "data.frame"
names(tib.c)
## [1] "biomasa" "flores.r" "flores.d" "hojas.d"
## [5] "plaga" "estatus" "fertilizacion"
Seleccione un subconjunto (el 75 % de las filas de todas las columnas) de todo el marco de datos o tableta. Use la función (sample n()) y asigne un valor faltante NA a dos variables cuantitativas cualesquiera del conjunto de datos muestreado:
tib.i <- sample_n(tib.c, 120*0.75)
dim(tib.i)
## [1] 90 7
tib.i[60,3]<-NA
tib.i[15,4]<-NA
head(tib.i)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 4.658924 13 7 136 Ausente S FI
## 2 5.310972 13 5 170 Presente MA FI
## 3 4.538076 16 9 111 Ausente S FI
## 4 3.285837 14 11 79 Presente S FI
## 5 4.226020 17 13 202 Ausente MA FO
## 6 4.387129 15 7 284 Presente MA FI
Ya tenemos dos conjuntos de datos, los que podemos guardar como tib.c al completo y tib.i al incompleto. Ahora si podemos usar algunas de las funciones de dplyr() consideradas en clase.
\[\color{blue}{Actividad~3}\] Seleccione una variable cualquiera con (select()) para tib.c:
tib.c_fert<-tib.c %>%
select(fertilizacion)
head(tib.c_fert)
## fertilizacion
## 1 FI
## 2 FO
## 3 FO
## 4 FI
## 5 FI
## 6 FI
Seleccione desde la tercera a la sexta variable con (select(:)) para tib.c:
tib.c_3_6<-tib.c %>%
select(3:6)
head(tib.c_3_6)
## flores.d hojas.d plaga estatus
## 1 11 280 Presente S
## 2 8 169 Ausente S
## 3 10 277 Presente S
## 4 8 56 Presente S
## 5 9 73 Presente S
## 6 9 153 Presente S
No seleccione desde la tercera a la sexta variable con (select(!(:))) para tib.c:
tib.c_sin_3_6<-select(tib.c,!(3:6))
head(tib.c_sin_3_6)
## biomasa flores.r fertilizacion
## 1 5.298067 15 FI
## 2 4.391265 17 FO
## 3 5.742773 17 FO
## 4 5.525798 16 FI
## 5 5.733124 14 FI
## 6 4.740585 16 FI
Seleccione las que no finalizan con .d usando (select(!ends with())):
sin_d<-select(tib.c,!ends_with("d"))
head(sin_d)
## biomasa flores.r plaga estatus fertilizacion
## 1 5.298067 15 Presente S FI
## 2 4.391265 17 Ausente S FO
## 3 5.742773 17 Presente S FO
## 4 5.525798 16 Presente S FI
## 5 5.733124 14 Presente S FI
## 6 4.740585 16 Presente S FI
Seleccione las que comienzan con Fl usando (select(starts with())):
with_fl<-select(tib.c, starts_with("fl"))
head(with_fl)
## flores.r flores.d
## 1 15 11
## 2 17 8
## 3 17 10
## 4 16 8
## 5 14 9
## 6 16 9
Seleccione las que comienzan con F y terminan con .d usando (select(starts with()& ends with())):
start.f_and_end_d<-select(tib.c, starts_with("F")& ends_with(".d"))
head(start.f_and_end_d)
## flores.d
## 1 11
## 2 8
## 3 10
## 4 8
## 5 9
## 6 9
Seleccione una variable cualquiera con (select()) para tib.c y agrúpela por Estatus usando (group by())
Guarde el resultado previo en la variable var estatus y ordene de mayor a menor por la misma variable anterior usando (arrange(desc(),.by group=TRUE)) para tib.c
order<-tib.c %>%
group_by(estatus) %>%
select(flores.r)
## Adding missing grouping variables: `estatus`
head(order)
## # A tibble: 6 x 2
## # Groups: estatus [1]
## estatus flores.r
## <fct> <int>
## 1 S 15
## 2 S 17
## 3 S 17
## 4 S 16
## 5 S 14
## 6 S 16
var.estatus <- tib.c %>%
arrange(desc(flores.r), by_group = TRUE)
head(var.estatus)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 3.760985 19 17 112 Presente S FO
## 2 6.020558 19 7 225 Ausente S FO
## 3 6.023857 19 6 106 Presente S FO
## 4 6.056599 19 18 79 Ausente PA FO
## 5 5.556938 19 10 222 Ausente MA FO
## 6 5.239378 19 11 93 Presente MA FO
Filtre los datos que comienzan con Flores para el estatus muy afectadas ( Filter(,)):
flores_MA<-tib.c %>%
select(starts_with("flores")) %>%
filter(estatus == "MA")
head(flores_MA)
## flores.r flores.d
## 1 15 12
## 2 15 6
## 3 16 9
## 4 19 10
## 5 16 9
## 6 17 10
Filtre los datos para cuando la biomasa es superior a 5 gramos:
bio5<-tib.c %>%
filter(biomasa > 5)
head(bio5)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 5.298067 15 11 280 Presente S FI
## 2 5.742773 17 10 277 Presente S FO
## 3 5.525798 16 8 56 Presente S FI
## 4 5.733124 14 9 73 Presente S FI
## 5 5.834968 14 9 155 Presente S FI
## 6 5.155649 17 14 44 Presente S FO
Filtre los datos para tener solo fertilización se tienen plantas parcialmente afectadas y fueron tratadas con fertilización orgánica:
Plants_PA_FO<-tib.c %>%
filter(estatus == "PA", fertilizacion == "FO")
head(Plants_PA_FO)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 5.236966 17 15 152 Presente PA FO
## 2 5.035616 18 13 33 Ausente PA FO
## 3 5.002382 17 8 230 Presente PA FO
## 4 4.223415 17 10 116 Presente PA FO
## 5 4.960302 18 13 90 Presente PA FO
## 6 5.115705 17 13 28 Presente PA FO
Filtre los datos para tener solo fertilización se tienen plantas parcialmente afectadas o fueron tratadas con fertilización inorgánica:
plants_PA_FI<-tib.c %>%
filter(estatus == "PA"|fertilizacion == "FI")
head(plants_PA_FI)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 5.298067 15 11 280 Presente S FI
## 2 5.525798 16 8 56 Presente S FI
## 3 5.733124 14 9 73 Presente S FI
## 4 4.740585 16 9 153 Presente S FI
## 5 4.844750 15 3 265 Presente S FI
## 6 5.834968 14 9 155 Presente S FI
median(flores.d)
## [1] 10
Filtre los datos de Flores desprendidas por presencia o ausencia de plaga para cuando el número de flores desprendidas es mayor a su mediana:
Pre_au_plaga<-tib.c %>%
select(flores.d, plaga) %>%
filter(flores.d > median(flores.d)) %>%
arrange(plaga)
head(Pre_au_plaga)
## flores.d plaga
## 1 11 Ausente
## 2 11 Ausente
## 3 16 Ausente
## 4 17 Ausente
## 5 13 Ausente
## 6 13 Ausente
Filtre los datos de una de las variables con datos faltantes por presencia o ausencia de plaga para cuando el valor de la variable con faltante es mayor a su mediana. Compare los resultados en los dos conjuntos de datos (completo o muestreado). Si encuentra diferencias en la mediana use median(, na.rm = TRUE):
Pre_au_plaga2<-tib.i %>%
select(flores.r, plaga) %>%
filter(flores.r > median(flores.r, na.rm = TRUE))
head(Pre_au_plaga)
## flores.d plaga
## 1 11 Ausente
## 2 11 Ausente
## 3 16 Ausente
## 4 17 Ausente
## 5 13 Ausente
## 6 13 Ausente
m.c <- median(tib.c$flores.r)
m.i <- median(tib.i$flores.r, na.rm = TRUE)
data.frame(m.c,m.i)
## m.c m.i
## 1 16 16
Nota: Las medianas de los dos conjuntos de datos son iguales aplicando na.rm = TRUE.
Como ya hemos usado varias funciones, en los ejercicios posteriores se omitirán funciones antes evaluadas y solo se mencionaran aquellas que no se hayan usado.
\[\color{blue}{Actividad~4}\]
Seleccione dos variables cuantitativas y asígnelas a un vector con c(,) y nómbrelo con v1. Ponga en otro vector dos valores numéricos que sirvan de condición a cada variable, por ejemplo, el cuartil inferior para una y el cuartil superior para la otra y llámelo v2. Usando ahora pipes, llame el data.frame completo y filtre usando el operador punto para seleccionar aquellos datos que superan respectivamente cada variable el valor de la condición. Use (v1=c();v2=c(); tib.c % > %filter(.data[[v1[[1]]>v2[[1]],.data[[v1[[2]]>v2[[2]])):
v1 <- c(tib.c$flores.r, tib.c$flores.d)
c1 <- quantile(tib.c$Flores.r, 0.75)
c2 <- quantile(tib.c$Flores.d, 0.25)
v2 <- c(c1,c2)
tib.c %>%
filter((v1[[1]]>v2[[1]]),v1[[2]]>v2[[2]])
## [1] biomasa flores.r flores.d hojas.d plaga
## [6] estatus fertilizacion
## <0 rows> (or 0-length row.names)
Cree un data frame o tableta con todas las variables cuantitativas continuas estandarizadas con el (score z) y las discretas con la estandarización minimax y llámelo tib.e. Use (mutate()):
mean(tib.c$biomasa)
## [1] 5.100295
sd(tib.c$biomasa)
## [1] 0.8639438
tib.c_zcore<-tib.c %>%
mutate(zscore = (biomasa - mean(biomasa))/sd(biomasa))
head(tib.c_zcore)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion zscore
## 1 5.298067 15 11 280 Presente S FI 0.2289177
## 2 4.391265 17 8 169 Ausente S FO -0.8206905
## 3 5.742773 17 10 277 Presente S FO 0.7436569
## 4 5.525798 16 8 56 Presente S FI 0.4925125
## 5 5.733124 14 9 73 Presente S FI 0.7324888
## 6 4.740585 16 9 153 Presente S FI -0.4163579
min_max_norm <- function (x) {
(x - min (x)) / (max (x) - min (x))
}
tib.c_norm<- (minmax= as.data.frame (lapply (tib.c [2:4], min_max_norm)))
head(tib.c_norm)
## flores.r flores.d hojas.d
## 1 0.500 0.4705882 0.9387755
## 2 0.750 0.2941176 0.5612245
## 3 0.750 0.4117647 0.9285714
## 4 0.625 0.2941176 0.1768707
## 5 0.375 0.3529412 0.2346939
## 6 0.625 0.3529412 0.5068027
tib.e <-data.frame(tib.c_zcore,tib.c_norm)
head(tib.e)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion zscore
## 1 5.298067 15 11 280 Presente S FI 0.2289177
## 2 4.391265 17 8 169 Ausente S FO -0.8206905
## 3 5.742773 17 10 277 Presente S FO 0.7436569
## 4 5.525798 16 8 56 Presente S FI 0.4925125
## 5 5.733124 14 9 73 Presente S FI 0.7324888
## 6 4.740585 16 9 153 Presente S FI -0.4163579
## flores.r.1 flores.d.1 hojas.d.1
## 1 0.500 0.4705882 0.9387755
## 2 0.750 0.2941176 0.5612245
## 3 0.750 0.4117647 0.9285714
## 4 0.625 0.2941176 0.1768707
## 5 0.375 0.3529412 0.2346939
## 6 0.625 0.3529412 0.5068027
Cree una nueva variable para tib.c donde divida el número de flores en las ramas con el número de flores desprendidas.
tib.c_div<-tib.c %>%
mutate(div_flores = flores.r/flores.d)
head(tib.c_div)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion div_flores
## 1 5.298067 15 11 280 Presente S FI 1.363636
## 2 4.391265 17 8 169 Ausente S FO 2.125000
## 3 5.742773 17 10 277 Presente S FO 1.700000
## 4 5.525798 16 8 56 Presente S FI 2.000000
## 5 5.733124 14 9 73 Presente S FI 1.555556
## 6 4.740585 16 9 153 Presente S FI 1.777778
Seleccione solo la variable del cociente previo agrupada por plaga. Cree una nueva variable que imprima el rango mínimo en cada grupo. LLame a la variable rangomin. Use (mutate( rangomin= min rank(desc())))
tib.c_divrang<-tib.c_div %>%
group_by(plaga)%>%
mutate(rangogim=min_rank(div_flores))
head(tib.c_divrang)
## # A tibble: 6 x 9
## # Groups: plaga [2]
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion div_flores
## <dbl> <int> <int> <int> <chr> <fct> <chr> <dbl>
## 1 5.30 15 11 280 Presente S FI 1.36
## 2 4.39 17 8 169 Ausente S FO 2.12
## 3 5.74 17 10 277 Presente S FO 1.7
## 4 5.53 16 8 56 Presente S FI 2
## 5 5.73 14 9 73 Presente S FI 1.56
## 6 4.74 16 9 153 Presente S FI 1.78
## # ... with 1 more variable: rangogim <int>
Renombre las variables asociadas a las flores a su gusto. Use (rename(tib.e,)):
names(tib.e)
## [1] "biomasa" "flores.r" "flores.d" "hojas.d"
## [5] "plaga" "estatus" "fertilizacion" "zscore"
## [9] "flores.r.1" "flores.d.1" "hojas.d.1"
renamed.tib.e<-rename(tib.e,flores.rojas=flores.r,
flores.azules=flores.d,
flores.rojas.marchitas=flores.r.1,
flores.azules.suculentas=flores.d.1)
names(renamed.tib.e)
## [1] "biomasa" "flores.rojas"
## [3] "flores.azules" "hojas.d"
## [5] "plaga" "estatus"
## [7] "fertilizacion" "zscore"
## [9] "flores.rojas.marchitas" "flores.azules.suculentas"
## [11] "hojas.d.1"
Pase a mayúsculas todos los nombres de las variables en cualquier tibble. Use (rename with(tib.e,toupper)):
tib.e_MAYUS<-(rename_with(tib.e,toupper))
head(tib.e_MAYUS)
## BIOMASA FLORES.R FLORES.D HOJAS.D PLAGA ESTATUS FERTILIZACION ZSCORE
## 1 5.298067 15 11 280 Presente S FI 0.2289177
## 2 4.391265 17 8 169 Ausente S FO -0.8206905
## 3 5.742773 17 10 277 Presente S FO 0.7436569
## 4 5.525798 16 8 56 Presente S FI 0.4925125
## 5 5.733124 14 9 73 Presente S FI 0.7324888
## 6 4.740585 16 9 153 Presente S FI -0.4163579
## FLORES.R.1 FLORES.D.1 HOJAS.D.1
## 1 0.500 0.4705882 0.9387755
## 2 0.750 0.2941176 0.5612245
## 3 0.750 0.4117647 0.9285714
## 4 0.625 0.2941176 0.1768707
## 5 0.375 0.3529412 0.2346939
## 6 0.625 0.3529412 0.5068027
Pase a minúsculas todos los nombres de variable y aproveche y cambie los .d por guiones al piso, es decir, d. Use (rename with(tib.e,∼tolower(gsub(”.”,” ”,.x,fixed=TRUE)))):
tib.e_raname_with<-rename_with(tib.e, ~ tolower(gsub(".", "_", .x, fixed = TRUE)))
head(tib.e_raname_with)
## biomasa flores_r flores_d hojas_d plaga estatus fertilizacion zscore
## 1 5.298067 15 11 280 Presente S FI 0.2289177
## 2 4.391265 17 8 169 Ausente S FO -0.8206905
## 3 5.742773 17 10 277 Presente S FO 0.7436569
## 4 5.525798 16 8 56 Presente S FI 0.4925125
## 5 5.733124 14 9 73 Presente S FI 0.7324888
## 6 4.740585 16 9 153 Presente S FI -0.4163579
## flores_r_1 flores_d_1 hojas_d_1
## 1 0.500 0.4705882 0.9387755
## 2 0.750 0.2941176 0.5612245
## 3 0.750 0.4117647 0.9285714
## 4 0.625 0.2941176 0.1768707
## 5 0.375 0.3529412 0.2346939
## 6 0.625 0.3529412 0.5068027
Entre las opciones interesantes para realizar estadísticas descriptivas esta la función summarise(), la cual usaremos en la siguiente actividad:
\[\color{blue}{Actividad~5}\]
Seleccione la variable biomasa de la tableta con faltantes y con summarise() obtenga la media y el número de datos de esta variable:
tib.i%>%
summarise(mean(biomasa),N_datos=n())
## mean(biomasa) N_datos
## 1 5.105746 90
Seleccione la variable biomasa de la tableta con faltantes y con summarise() obtenga la media y el número de datos por tipo de fertilización:
tib.i%>%
group_by(fertilizacion) %>%
summarise(mean(biomasa),N_datos=n())
## # A tibble: 2 x 3
## fertilizacion `mean(biomasa)` N_datos
## <chr> <dbl> <int>
## 1 FI 5.05 56
## 2 FO 5.20 34
Seleccione la variable biomasa de la tableta con faltantes y con summarise() obtenga los cuantiles 0.10,0.20,0.30,0.40 y 0.50 por tipo de fertilización:
tib.i%>%
group_by(fertilizacion) %>%
summarise(Q.10=quantile(tib.i$biomasa,0.10),
Q.20=quantile(tib.i$biomasa,0.20),
Q.30=quantile(tib.i$biomasa,0.30),
Q.40=quantile(tib.i$biomasa,0.40),
Q.50=quantile(tib.i$biomasa,0.50))
## # A tibble: 2 x 6
## fertilizacion Q.10 Q.20 Q.30 Q.40 Q.50
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FI 3.98 4.52 4.76 4.90 5.04
## 2 FO 3.98 4.52 4.76 4.90 5.04
Seleccione la variable biomasa de la tableta con faltantes y con summarise() obtenga la media, mediana, máximo, mínimo, desviación típica, desviación media, media truncada y varianza por tipo de fertilización y plaga:
tib.i%>%
group_by(fertilizacion,plaga) %>%
summarise(meanbio=mean(biomasa),
medbio=median(biomasa),
maxbio=max(biomasa),
minbio=min(biomasa),
destipica=sd(biomasa),
desmedia=mean(abs(biomasa-mean(biomasa))),
medtru5=mean(biomasa,trim=5/100),
medtru10=mean(biomasa,trim=10/100),
varbio=var(biomasa))
## `summarise()` has grouped output by 'fertilizacion'. You can override using the `.groups` argument.
## # A tibble: 4 x 11
## # Groups: fertilizacion [2]
## fertilizacion plaga meanbio medbio maxbio minbio destipica desmedia medtru5
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FI Ausente 5.25 4.79 7.18 3.97 1.07 0.867 5.25
## 2 FI Presente 5.01 5.07 6.74 2.54 0.833 0.603 5.03
## 3 FO Ausente 5.48 5.72 7.26 3.08 1.11 0.882 5.48
## 4 FO Presente 5.00 5.04 6.07 3.76 0.667 0.511 5.01
## # ... with 2 more variables: medtru10 <dbl>, varbio <dbl>
Seleccione la variable biomasa de la tableta con faltantes y con summarise() obtenga la media, mediana, máximo, mínimo, desviación típica, desviación media, media truncada y varianza por tipo de fertilización y plaga filtrando por plantas sanas:
tib.i_filS<-tib.i%>%
group_by(estatus) %>%
filter(estatus=="S")%>%
select(fertilizacion,plaga)
## Adding missing grouping variables: `estatus`
head(tib.i_filS)
## # A tibble: 6 x 3
## # Groups: estatus [1]
## estatus fertilizacion plaga
## <fct> <chr> <chr>
## 1 S FI Ausente
## 2 S FI Ausente
## 3 S FI Presente
## 4 S FO Ausente
## 5 S FO Presente
## 6 S FI Presente
tib.i_filS%>%
group_by(fertilizacion,plaga) %>%
summarise(Ndatos=n(),
meanbio=mean(biomasa),
medbio=median(biomasa),
maxbio=max(biomasa),
minbio=min(biomasa),
destipica=sd(biomasa),
desmedia=mean(abs(biomasa-mean(biomasa))),
medtru5=mean(biomasa,trim=5/100),
medtru10=mean(biomasa,trim=10/100),
varbio=var(biomasa))
## `summarise()` has grouped output by 'fertilizacion'. You can override using the `.groups` argument.
## # A tibble: 4 x 12
## # Groups: fertilizacion [2]
## fertilizacion plaga Ndatos meanbio medbio maxbio minbio destipica desmedia
## <chr> <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FI Ausente 4 5.10 5.03 7.26 2.54 0.864 0.671
## 2 FI Presente 14 5.10 5.03 7.26 2.54 0.864 0.671
## 3 FO Ausente 5 5.10 5.03 7.26 2.54 0.864 0.671
## 4 FO Presente 8 5.10 5.03 7.26 2.54 0.864 0.671
## # ... with 3 more variables: medtru5 <dbl>, medtru10 <dbl>, varbio <dbl>
Con la tableta con faltantes use la función drop na() para sacar los faltantes y compare las estadísticas obtenidas en el item anterior con y sin faltantes:
tib.i_sinNA <-drop_na(tib.i)
head(tib.i_sinNA)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 4.658924 13 7 136 Ausente S FI
## 2 5.310972 13 5 170 Presente MA FI
## 3 4.538076 16 9 111 Ausente S FI
## 4 3.285837 14 11 79 Presente S FI
## 5 4.226020 17 13 202 Ausente MA FO
## 6 4.387129 15 7 284 Presente MA FI
tib.i_filSsinNA<-tib.i_sinNA%>%
group_by(estatus) %>%
filter(estatus=="S")%>%
select(fertilizacion,plaga)
## Adding missing grouping variables: `estatus`
head(tib.i_filS)
## # A tibble: 6 x 3
## # Groups: estatus [1]
## estatus fertilizacion plaga
## <fct> <chr> <chr>
## 1 S FI Ausente
## 2 S FI Ausente
## 3 S FI Presente
## 4 S FO Ausente
## 5 S FO Presente
## 6 S FI Presente
tib.i_filSsinNA%>%
group_by(fertilizacion,plaga) %>%
summarise(Ndatos=n(),
meanbio=mean(biomasa),
medbio=median(biomasa),
maxbio=max(biomasa),
minbio=min(biomasa),
destipica=sd(biomasa),
desmedia=mean(abs(biomasa-mean(biomasa))),
medtru5=mean(biomasa,trim=5/100),
medtru10=mean(biomasa,trim=10/100),
varbio=var(biomasa))
## `summarise()` has grouped output by 'fertilizacion'. You can override using the `.groups` argument.
## # A tibble: 4 x 12
## # Groups: fertilizacion [2]
## fertilizacion plaga Ndatos meanbio medbio maxbio minbio destipica desmedia
## <chr> <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 FI Ausente 4 5.10 5.03 7.26 2.54 0.864 0.671
## 2 FI Presente 14 5.10 5.03 7.26 2.54 0.864 0.671
## 3 FO Ausente 5 5.10 5.03 7.26 2.54 0.864 0.671
## 4 FO Presente 8 5.10 5.03 7.26 2.54 0.864 0.671
## # ... with 3 more variables: medtru5 <dbl>, medtru10 <dbl>, varbio <dbl>
Nota: Al eliminar los datos faltantes se observa que los estadisticos no cambiaron, siguen siendo iguales.
Filtre los datos seleccionando solo las plantas afectadas o muy afectadas. Use el operador %in %:
platas_PA_MA <- filter(tib.i,estatus %in% c("PA", "MA"))
head(platas_PA_MA)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 5.310972 13 5 170 Presente MA FI
## 2 4.226020 17 13 202 Ausente MA FO
## 3 4.387129 15 7 284 Presente MA FI
## 4 7.176602 16 9 66 Ausente MA FI
## 5 6.056599 19 18 79 Ausente PA FO
## 6 3.972527 14 10 47 Ausente MA FI
Seleccione la tibble con faltantes y use complete.cases(.) para dejar por fuera los faltantes:
SinNA_complet.cases<-filter(tib.i[1:90,],complete.cases(tib.i[1:90,]))
head(SinNA_complet.cases)
## biomasa flores.r flores.d hojas.d plaga estatus fertilizacion
## 1 4.658924 13 7 136 Ausente S FI
## 2 5.310972 13 5 170 Presente MA FI
## 3 4.538076 16 9 111 Ausente S FI
## 4 3.285837 14 11 79 Presente S FI
## 5 4.226020 17 13 202 Ausente MA FO
## 6 4.387129 15 7 284 Presente MA FI
Elimine de cualquier tibble las columnas asociadas al conteo de flores:
remove_tib.i<-mutate(tib.i,flores.r=NULL,flores.d=NULL)
head(remove_tib.i)
## biomasa hojas.d plaga estatus fertilizacion
## 1 4.658924 136 Ausente S FI
## 2 5.310972 170 Presente MA FI
## 3 4.538076 111 Ausente S FI
## 4 3.285837 79 Presente S FI
## 5 4.226020 202 Ausente MA FO
## 6 4.387129 284 Presente MA FI
Seleccione de cualquier tibble las variables que contengan la d. Use select(contains()):
d_contain<-tib.i%>%
select(contains("d"))
head(d_contain)
## flores.d hojas.d
## 1 7 136
## 2 5 170
## 3 9 111
## 4 11 79
## 5 13 202
## 6 7 284
Reordene una tableta usando select(,everything()) colocando primero los conteos de flores:
R_everyth<-tib.i%>%
select(flores.r,flores.d,everything())
head(R_everyth)
## flores.r flores.d biomasa hojas.d plaga estatus fertilizacion
## 1 13 7 4.658924 136 Ausente S FI
## 2 13 5 5.310972 170 Presente MA FI
## 3 16 9 4.538076 111 Ausente S FI
## 4 14 11 3.285837 79 Presente S FI
## 5 17 13 4.226020 202 Ausente MA FO
## 6 15 7 4.387129 284 Presente MA FI
\[\color{blue}{Fin~del~ejercicio}\]