.

———————————————————————————-

Introducción

En este documento se desarrolla ejercicios referentes al manejo de data frames. Se crean diferentes objetos en R, tales como data frames y listas, y se realizan operaciones las cuales estaran basados en lo el ejercicio nos pida realizar.

A continuación se presenta todo el proceso paso a paso.

———————————————————————————-

Ejercicio 1

La tabla presenta la altura, en metros, de los arboles que se encuentran en 4 áreas de terreno.

Planteamiento de problema

Se dispone de una tabla que presenta las alturas, medidas en metros, de los árboles muestreados en cuatro áreas de terreno distintas (Área 1, Área 2, Área 3 y Área 4). El objetivo es utilizar las capacidades de programación y análisis de datos de R para realizar una serie de manipulaciones y cálculos estadísticos sobre estos datos de altura.

———————————————————————————-

Solución

Codigo en R:

—– a) Crear vectores numéricos —–

area1 <- c(7.5, 12, 14.5)
area2 <- c(12.5, 10.5, 13, 9, 18.5)
area3 <- c(11, 8, 7.5, 9.5, 19, 14)
area4 <- c(12.5, 16, 9.5, 10)

Imprimimos para verificar

print("Área 1:")
## [1] "Área 1:"
print(area1)
## [1]  7.5 12.0 14.5
print("Área 2:")
## [1] "Área 2:"
print(area2)
## [1] 12.5 10.5 13.0  9.0 18.5
print("Área 3:")
## [1] "Área 3:"
print(area3)
## [1] 11.0  8.0  7.5  9.5 19.0 14.0
print("Área 4:")
## [1] "Área 4:"
print(area4)
## [1] 12.5 16.0  9.5 10.0

—– b) Agrupar en una lista —–

lista_areas <- list(area1 = area1, area2 = area2, area3 = area3, area4 = area4)
print("Lista de Áreas:")
## [1] "Lista de Áreas:"
print(lista_areas)
## $area1
## [1]  7.5 12.0 14.5
## 
## $area2
## [1] 12.5 10.5 13.0  9.0 18.5
## 
## $area3
## [1] 11.0  8.0  7.5  9.5 19.0 14.0
## 
## $area4
## [1] 12.5 16.0  9.5 10.0

—– c) ¿El primer árbol es mayor que el último? —–

resultado_c <- sapply(lista_areas, function(x) x[1] > x[length(x)])
print("c) Primer árbol > Último árbol:")
## [1] "c) Primer árbol > Último árbol:"
print(resultado_c)
## area1 area2 area3 area4 
## FALSE FALSE FALSE  TRUE

Resultado esperado:

  • area1 FALSE
  • area2 FALSE
  • area3 FALSE
  • area4 TRUE

—– d) Logaritmo decimal del 3er árbol del área 3 —–

log_area3_3ro <- log10(area3[3])
print("d) log10 de 3er árbol en área 3:")
## [1] "d) log10 de 3er árbol en área 3:"
print(log_area3_3ro)
## [1] 0.8750613

—– e) Suma de las alturas de los 3 primeros árboles del área 4 —–

suma_area4_3 <- sum(area4[1:3])
print("e) Suma de los 3 primeros árboles del área 4:")
## [1] "e) Suma de los 3 primeros árboles del área 4:"
print(suma_area4_3)
## [1] 38

—– f) Altura media de los árboles del área 1 —–

media_area1 <- mean(area1)
print("f) Altura media del área 1:")
## [1] "f) Altura media del área 1:"
print(media_area1)
## [1] 11.33333

———————————————————————————-

Ejercicio 2

La tabla recopila información de 5 pacientes (sexo, presión arterial y pulsos por minuto), atendidos en un hospital.

Planteamiento de problema

El ejercicio requiere la creación, manipulación y análisis elemental de un pequeño conjunto de datos médicos que contiene el sexo, la presión arterial y el pulso por minuto de cinco pacientes. El objetivo principal es demostrar la habilidad para estructurar correctamente estos datos en un dataframe, acceder a filas y columnas específicas mediante indexación, realizar comparaciones lógicas entre valores condicionales, calcular la media para un subconjunto de datos (hombres) y aplicar una función matemática básica (raíz cuadrada) a un dato individual, cubriendo así las operaciones fundamentales de gestión de datos en R.

———————————————————————————-

Solución

Codigo en R:

—-(a) y (b) Creación del dataset—-

datos <- data.frame(
  Sexo = c("Hombre", "Mujer", "Hombre", "Hombre", "Mujer"),
  Presion = c(119, 99, 102, 78, 78),
  Pulso = c(59, 89, 107, 76, 91)
)

—- (c) Visualizar valores para el 1er y 4to individuo —-

datos[c(1, 4), ]
##     Sexo Presion Pulso
## 1 Hombre     119    59
## 4 Hombre      78    76

—- (d) Determinar si la primera mujer (2) tiene mayor presión que la segunda mujer (5) —-

datos$Presion[2] > datos$Presion[5]
## [1] TRUE

—- (e) Media del pulso de los hombres —-

mean(datos$Pulso[datos$Sexo == "Hombre"])
## [1] 80.66667

—- (f) Raíz cuadrada de la presión del cuarto paciente —-

sqrt(datos$Presion[4])
## [1] 8.831761

———————————————————————————-

Ejercicio 3

Ejercicio Integral con el Dataset mtcars Planteamiento del Ejercicio:

Dataset: mtcars

Descripción: El conjunto de datos mtcars contiene datos sobre 32 modelos de automóviles, con variables que incluyen el consumo de combustible, el número de cilindros, la potencia, y más.

Objetivo: Responder a una serie de preguntas utilizando técnicas de manipulación de dataframes en R.

Preguntas:

Carga y Exploración Inicial

Pregunta: Carga el dataset mtcars y muestra las primeras 10 filas

Resumen del Dataset

Pregunta: ¿Cuántas observaciones y variables hay en el dataset? Muestra un resumen estadístico del dataset.

Acceso a Columnas Específicas

Pregunta: Selecciona y muestra las columnas mpg (millas por galón) y hp (caballos de fuerza).

Filtrado de Datos

Pregunta: Filtra el dataset para mostrar solo los automóviles que tienen 6 cilindros.

Estadísticas Descriptivas

Pregunta: ¿Cuál es el valor promedio de mpg para cada número de cilindros?

Añadir Nueva Columna

Pregunta: Añade una nueva columna llamada kpl que sea el equivalente en kilómetros por litro (1 milla por galón = 0.425144 km por litro)

Ordenar Datos

Pregunta: Ordena el dataset por hp en orden descendente y muestra las primeras 10 filas

Visualización de Datos

Pregunta: Crea un diagrama de dispersión de mpg vs wt (peso) coloreado por cyl

Matriz de Correlación

Pregunta: Calcula y muestra la matriz de correlación entre las variables numéricas del dataframe

Planteamiento de problema

En el ejercicio se va ha aplicar técnicas de manipulación y análisis exploratorio de dataframes en R sobre el dataset mtcars, que contiene datos sobre 32 modelos de automóviles y sus características (consumo, cilindros, potencia, etc.). El desafío se estructura en una serie de pasos secuenciales que deben resolverse con código en RStudio: primero, se debe realizar la carga y exploración inicial del dataset, mostrando sus primeras filas. Luego, se debe obtener un resumen estadístico y determinar el número de observaciones y variables. A continuación, se requiere la selección y visualización de columnas específicas (como mpg y hp). Posteriormente, se debe aplicar filtrado de datos para aislar únicamente los vehículos con 6 cilindros. Finalmente, se concluye con un análisis descriptivo calculando el promedio de millas por galón (mpg) para cada número de cilindros, demostrando la capacidad de agrupar y resumir la información dentro del dataframe.

———————————————————————————-

Solución

Codigo en R:

Cargar el dataset mtcars

data(mtcars)

1) Mostrar las primeras 10 filas

head(mtcars, 10)
##                    mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4         21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag     21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Datsun 710        22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1
## Hornet 4 Drive    21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Hornet Sportabout 18.7   8 360.0 175 3.15 3.440 17.02  0  0    3    2
## Valiant           18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Duster 360        14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Merc 240D         24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    2
## Merc 230          22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    2
## Merc 280          19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4

2) ¿Cuántas observaciones y variables?

dim(mtcars)
## [1] 32 11

Resumen estadístico del dataset

summary(mtcars)
##       mpg             cyl             disp             hp       
##  Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
##  1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
##  Median :19.20   Median :6.000   Median :196.3   Median :123.0  
##  Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
##  3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
##  Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
##       drat             wt             qsec             vs        
##  Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
##  1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
##  Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
##  Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
##  3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
##  Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
##        am              gear            carb      
##  Min.   :0.0000   Min.   :3.000   Min.   :1.000  
##  1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
##  Median :0.0000   Median :4.000   Median :2.000  
##  Mean   :0.4062   Mean   :3.688   Mean   :2.812  
##  3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :1.0000   Max.   :5.000   Max.   :8.000

3) Seleccionar y mostrar columnas mpg y hp

mtcars[, c("mpg", "hp")]
##                      mpg  hp
## Mazda RX4           21.0 110
## Mazda RX4 Wag       21.0 110
## Datsun 710          22.8  93
## Hornet 4 Drive      21.4 110
## Hornet Sportabout   18.7 175
## Valiant             18.1 105
## Duster 360          14.3 245
## Merc 240D           24.4  62
## Merc 230            22.8  95
## Merc 280            19.2 123
## Merc 280C           17.8 123
## Merc 450SE          16.4 180
## Merc 450SL          17.3 180
## Merc 450SLC         15.2 180
## Cadillac Fleetwood  10.4 205
## Lincoln Continental 10.4 215
## Chrysler Imperial   14.7 230
## Fiat 128            32.4  66
## Honda Civic         30.4  52
## Toyota Corolla      33.9  65
## Toyota Corona       21.5  97
## Dodge Challenger    15.5 150
## AMC Javelin         15.2 150
## Camaro Z28          13.3 245
## Pontiac Firebird    19.2 175
## Fiat X1-9           27.3  66
## Porsche 914-2       26.0  91
## Lotus Europa        30.4 113
## Ford Pantera L      15.8 264
## Ferrari Dino        19.7 175
## Maserati Bora       15.0 335
## Volvo 142E          21.4 109

4) Filtrar automóviles con 6 cilindros

mtcars_6cyl <- mtcars[mtcars$cyl == 6, ]
mtcars_6cyl
##                 mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Mazda RX4      21.0   6 160.0 110 3.90 2.620 16.46  0  1    4    4
## Mazda RX4 Wag  21.0   6 160.0 110 3.90 2.875 17.02  0  1    4    4
## Hornet 4 Drive 21.4   6 258.0 110 3.08 3.215 19.44  1  0    3    1
## Valiant        18.1   6 225.0 105 2.76 3.460 20.22  1  0    3    1
## Merc 280       19.2   6 167.6 123 3.92 3.440 18.30  1  0    4    4
## Merc 280C      17.8   6 167.6 123 3.92 3.440 18.90  1  0    4    4
## Ferrari Dino   19.7   6 145.0 175 3.62 2.770 15.50  0  1    5    6

5) Valor promedio de mpg por número de cilindros

tapply(mtcars$mpg, mtcars$cyl, mean)
##        4        6        8 
## 26.66364 19.74286 15.10000

6) Añadir nueva columna kpl (kilómetros por litro)

mtcars$kpl <- mtcars$mpg * 0.425144

Mostrar dataset con la nueva columna

head(mtcars)
##                    mpg cyl disp  hp drat    wt  qsec vs am gear carb      kpl
## Mazda RX4         21.0   6  160 110 3.90 2.620 16.46  0  1    4    4 8.928024
## Mazda RX4 Wag     21.0   6  160 110 3.90 2.875 17.02  0  1    4    4 8.928024
## Datsun 710        22.8   4  108  93 3.85 2.320 18.61  1  1    4    1 9.693283
## Hornet 4 Drive    21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 9.098082
## Hornet Sportabout 18.7   8  360 175 3.15 3.440 17.02  0  0    3    2 7.950193
## Valiant           18.1   6  225 105 2.76 3.460 20.22  1  0    3    1 7.695106

7) Ordenar por hp en orden descendente y mostrar primeras 10 filas

mtcars_order_hp <- mtcars[order(-mtcars$hp), ]
head(mtcars_order_hp, 10)
##                      mpg cyl  disp  hp drat    wt  qsec vs am gear carb
## Maserati Bora       15.0   8 301.0 335 3.54 3.570 14.60  0  1    5    8
## Ford Pantera L      15.8   8 351.0 264 4.22 3.170 14.50  0  1    5    4
## Duster 360          14.3   8 360.0 245 3.21 3.570 15.84  0  0    3    4
## Camaro Z28          13.3   8 350.0 245 3.73 3.840 15.41  0  0    3    4
## Chrysler Imperial   14.7   8 440.0 230 3.23 5.345 17.42  0  0    3    4
## Lincoln Continental 10.4   8 460.0 215 3.00 5.424 17.82  0  0    3    4
## Cadillac Fleetwood  10.4   8 472.0 205 2.93 5.250 17.98  0  0    3    4
## Merc 450SE          16.4   8 275.8 180 3.07 4.070 17.40  0  0    3    3
## Merc 450SL          17.3   8 275.8 180 3.07 3.730 17.60  0  0    3    3
## Merc 450SLC         15.2   8 275.8 180 3.07 3.780 18.00  0  0    3    3
##                          kpl
## Maserati Bora       6.377160
## Ford Pantera L      6.717275
## Duster 360          6.079559
## Camaro Z28          5.654415
## Chrysler Imperial   6.249617
## Lincoln Continental 4.421498
## Cadillac Fleetwood  4.421498
## Merc 450SE          6.972362
## Merc 450SL          7.354991
## Merc 450SLC         6.462189

8) Diagrama de dispersión de mpg vs wt, coloreado por número de cilindros

library(ggplot2)
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
  geom_point(size = 3) +
  labs(x = "Peso (1000 lbs)", y = "Millas por galón",
       color = "Cilindros") +
  theme_minimal()

9) Matriz de correlación entre las variables numéricas

cor(mtcars)
##             mpg        cyl       disp         hp        drat         wt
## mpg   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
## cyl  -0.8521620  1.0000000  0.9020329  0.8324475 -0.69993811  0.7824958
## disp -0.8475514  0.9020329  1.0000000  0.7909486 -0.71021393  0.8879799
## hp   -0.7761684  0.8324475  0.7909486  1.0000000 -0.44875912  0.6587479
## drat  0.6811719 -0.6999381 -0.7102139 -0.4487591  1.00000000 -0.7124406
## wt   -0.8676594  0.7824958  0.8879799  0.6587479 -0.71244065  1.0000000
## qsec  0.4186840 -0.5912421 -0.4336979 -0.7082234  0.09120476 -0.1747159
## vs    0.6640389 -0.8108118 -0.7104159 -0.7230967  0.44027846 -0.5549157
## am    0.5998324 -0.5226070 -0.5912270 -0.2432043  0.71271113 -0.6924953
## gear  0.4802848 -0.4926866 -0.5555692 -0.1257043  0.69961013 -0.5832870
## carb -0.5509251  0.5269883  0.3949769  0.7498125 -0.09078980  0.4276059
## kpl   1.0000000 -0.8521620 -0.8475514 -0.7761684  0.68117191 -0.8676594
##             qsec         vs          am       gear        carb        kpl
## mpg   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507  1.0000000
## cyl  -0.59124207 -0.8108118 -0.52260705 -0.4926866  0.52698829 -0.8521620
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692  0.39497686 -0.8475514
## hp   -0.70822339 -0.7230967 -0.24320426 -0.1257043  0.74981247 -0.7761684
## drat  0.09120476  0.4402785  0.71271113  0.6996101 -0.09078980  0.6811719
## wt   -0.17471588 -0.5549157 -0.69249526 -0.5832870  0.42760594 -0.8676594
## qsec  1.00000000  0.7445354 -0.22986086 -0.2126822 -0.65624923  0.4186840
## vs    0.74453544  1.0000000  0.16834512  0.2060233 -0.56960714  0.6640389
## am   -0.22986086  0.1683451  1.00000000  0.7940588  0.05753435  0.5998324
## gear -0.21268223  0.2060233  0.79405876  1.0000000  0.27407284  0.4802848
## carb -0.65624923 -0.5696071  0.05753435  0.2740728  1.00000000 -0.5509251
## kpl   0.41868403  0.6640389  0.59983243  0.4802848 -0.55092507  1.0000000

———————————————————————————-

CONCLUCIÓN

En el trabajo se pudo aplicar varios comandos para el manejo de data frames, esto ayuda a poder realizar de mejor manera los ejercicios.

El conjunto de ejercicios realizados sobre el dataset mtcars en R demuestra de manera integral la capacidad de manipular, explorar y resumir dataframes, lo cual es fundamental en el análisis exploratorio de datos (EDA). A través de la carga, el resumen estadístico, la selección de columnas, el filtrado condicional y la agregación de datos (cálculo de promedios por grupos), se lograron extraer información valiosa y específica del dataset. En esencia, se aplicaron las herramientas básicas pero poderosas de R para transformar datos brutos en estadísticas descriptivas accionables, permitiendo entender rápidamente la estructura del dataset, la distribución de sus variables clave (mpg, hp, cyl), y la relación entre ellas, como la eficiencia de combustible (mpg) en función del número de cilindros.