remove(list = ls())
#Objetivo: Utilizar el conjunto de datos penguins de la biblioteca
# palmerpenguins para realizar análisis de datos básicos y avanzados en R.
#Preparacion
#install.packages("palmerpenguins")
library(palmerpenguins)
help("palmerpenguins-package")
## starting httpd help server ... done
data(penguins)
# 1. EXPLORACION INICIAL ####
# *****************************************************
#*Mostrar las primeras 6 filas del conjunto de datos "penguins"
#*Uso de la utilidad head()
head(penguins)
## species island bill_length_mm bill_depth_mm flipper_length_mm body_mass_g
## 1 Adelie Torgersen 39.1 18.7 181 3750
## 2 Adelie Torgersen 39.5 17.4 186 3800
## 3 Adelie Torgersen 40.3 18.0 195 3250
## 4 Adelie Torgersen NA NA NA NA
## 5 Adelie Torgersen 36.7 19.3 193 3450
## 6 Adelie Torgersen 39.3 20.6 190 3650
## sex year
## 1 male 2007
## 2 female 2007
## 3 female 2007
## 4 <NA> 2007
## 5 female 2007
## 6 male 2007
#* Las columnas disponibles para el análisis de estos datos es de:*
#* species
#* island
#* bill_length_mm
#* bill_depth_mm
#* flipper_length_mm
#* body_mass_g
#* sex
#* year
# Usar funcion str()
str(penguins)
## 'data.frame': 344 obs. of 8 variables:
## $ species : Factor w/ 3 levels "Adelie","Chinstrap",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ island : Factor w/ 3 levels "Biscoe","Dream",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ bill_length_mm : num 39.1 39.5 40.3 NA 36.7 39.3 38.9 39.2 34.1 42 ...
## $ bill_depth_mm : num 18.7 17.4 18 NA 19.3 20.6 17.8 19.6 18.1 20.2 ...
## $ flipper_length_mm: int 181 186 195 NA 193 190 181 195 193 190 ...
## $ body_mass_g : int 3750 3800 3250 NA 3450 3650 3625 4675 3475 4250 ...
## $ sex : Factor w/ 2 levels "female","male": 2 1 1 NA 1 2 1 2 NA NA ...
## $ year : int 2007 2007 2007 2007 2007 2007 2007 2007 2007 2007 ...
# Tiene 8 variables y 344 observaciones.
# 2. DOCUMENTACION Y AYUDA ####
# ****************************************************
#* Utiliza la función help() o ?penguins para leer sobre el conjunto de datos penguins. ¿Qué representa cada columna?
help("penguins")
# Penguins de la data de palmerpenguins es la medida de pinguinos cerca de Palmer Station en la antartida
# Cada columna representa:
# species: La clasificacion entre Adelie, Chinstrap y Gentoo
# island: La isal en la que habitan
# bill_length_mm: Indicador de la longitud del pico en milimetros
# flipper_length_mm: Indicador de las aletas en milimetros
# body_mass_g: Indicador del peso corporal en gramos
# sex: Idicador de si las observaciones de la muestra son hembras o machos
# year: El año en el que fueron estudiados
# 3. RESUMEN ESTADISTICO ####
# ****************************************************
#*Aplica la función summary() para obtener un resumen estadístico de todas las columnas en penguins.
summary(penguins)
## species island bill_length_mm bill_depth_mm
## Adelie :152 Biscoe :168 Min. :32.10 Min. :13.10
## Chinstrap: 68 Dream :124 1st Qu.:39.23 1st Qu.:15.60
## Gentoo :124 Torgersen: 52 Median :44.45 Median :17.30
## Mean :43.92 Mean :17.15
## 3rd Qu.:48.50 3rd Qu.:18.70
## Max. :59.60 Max. :21.50
## NA's :2 NA's :2
## flipper_length_mm body_mass_g sex year
## Min. :172.0 Min. :2700 female:165 Min. :2007
## 1st Qu.:190.0 1st Qu.:3550 male :168 1st Qu.:2007
## Median :197.0 Median :4050 NA's : 11 Median :2008
## Mean :200.9 Mean :4202 Mean :2008
## 3rd Qu.:213.0 3rd Qu.:4750 3rd Qu.:2009
## Max. :231.0 Max. :6300 Max. :2009
## NA's :2 NA's :2
# 4. ACCESO A NOMBRES DE FILAS Y COLUMAS ####
# **************************************************
colnames(penguins)
## [1] "species" "island" "bill_length_mm"
## [4] "bill_depth_mm" "flipper_length_mm" "body_mass_g"
## [7] "sex" "year"
colnames(mtcars)
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
# Que uno da caracteristicas de autos y el otro de pinguinos.
# 5. FILTRADO DE DATOS ####
# *****************************************************
#Crea un nuevo dataframe que contenga solo los pingüinos con masa corporal mayor a 4000 gramos.
penguin_over_4000grams <- subset(penguins, body_mass_g > 4000)
#Filtra el conjunto de datos para obtener solo los pingüinos de la especie "Adelie".
Adelies <- subset(penguins, species == "Adelie")
# 6. SELECCION DE COLUMNAS ESPECIFICAS ####
# *****************************************************
#Selecciona y muestra solo las columnas species, bill_length_mm, y bill_depth_mm del conjunto de datos penguins.
Datos_pico <- penguins[, c("bill_length_mm", "bill_depth_mm")]
# 7. ORDENACION DE DATOS ####
# *****************************************************
# Ordena el conjunto de datos penguins por flipper_length_mm en orden ascendente.
penguins_flipperlenghtmm_ascendente <- penguins[order
(penguins$flipper_length_mm), ]
# Ordena penguins por body_mass_g en orden descendente.
penguins_flipperlenghtmm_descendente <- penguins[order
(-penguins$flipper_length_mm), ]
# 8. CREACION DE NUEVAS VARIABLES ####
# *****************************************************
#Añade una nueva columna llamada flipper_length_cm que sea el resultado de convertir flipper_length_mm a centímetros.
penguins$flipper_length_cm <- penguins$flipper_length_mm /10
#Calcula el índice de masa corporal (IMC) para los pingüinos usando la fórmula body_mass_g / (flipper_length_mm/10)^2 y añade esta nueva columna al dataframe.
penguins$IMC <- penguins$body_mass_g / (penguins$flipper_length_mm/10)^2
# 9. AGRUPACION Y RESUMEN ####
# *****************************************************
#Divide el conjunto de datos en grupos según la especie (species) y calcula la media de la masa corporal para cada grupo
Media_masa_corporal <- aggregate(body_mass_g ~ species,
data = penguins, FUN = mean)
print(Media_masa_corporal)
## species body_mass_g
## 1 Adelie 3700.662
## 2 Chinstrap 3733.088
## 3 Gentoo 5076.016
# 10. DESAFIOS FINALES####
# *****************************************************
#Calcula la mediana de la longitud del pico (bill_length_mm) para cada especie.
mediana_picos <- aggregate(bill_length_mm ~ species,
data = penguins, FUN = median)
#Encuentra la especie que tiene la mayor longitud media del pico. Usa agrupación y resumen para hacer este cálculo.
Gentoo <- subset(penguins, species == "Gentoo")
Chinstrap <- subset(penguins, species == "Chinstrap")
PicosAdelie <- mean(Adelies$bill_length_mm)
#View(PicosAdelie)
PicosGentoo <- mean(Gentoo$bill_length_mm)
#View(PicosGentoo)
PicosChinstrap <- mean(Chinstrap$bill_length_mm)
#View(PicosChinstrap)
# *******************************************************************************