1 Instrucciones generales

Esta práctica tiene como propósito aplicar en R los conceptos de manipulación y preparación de datos, tipos de datos, objetos, coerción, secuencias, operadores lógicos y acceso a componentes de objetos.

1.1 Recomendaciones

  1. Desarrolle cada sección en orden.
  2. Ejecute el código y documente con sus propias palabras lo que observa.
  3. Cuando se solicite una interpretación, escriba una respuesta breve debajo del chunk.
  4. Guarde este archivo con su nombre y entregue el resultado renderizado en HTML o PDF, junto con el archivo .Rmd.

2 Objetivos de aprendizaje

Al finalizar esta práctica usted será capaz de:

3 Contexto del caso

Suponga que usted trabaja con una base de datos inicial de solicitudes académicas y necesita limpiarla, transformarla y prepararla para un análisis posterior. La información contiene variables numéricas, lógicas y de texto, así como algunos datos faltantes y formatos que deben corregirse.

4 Sección 1. Sintaxis básica y creación de variables

4.1 1.1 Asignación de variables

Cree las siguientes variables:

  • nombre_curso con el texto "Tópicos Avanzados"
  • cantidad_estudiantes con el valor 18
  • promedio_inicial con el valor 72.5
  • curso_activo con el valor lógico TRUE
# Escriba aquí su código

4.1.1 Pregunta de reflexión

Explique brevemente la diferencia entre una variable de tipo carácter, una numérica y una lógica.

Respuesta:

4.2 1.2 Consultar ayuda en R

Use funciones de ayuda para investigar la función mean.

# Escriba aquí su código

4.2.1 Pregunta

¿Qué diferencia observa entre help(mean) y ?mean?

Respuesta:

5 Sección 2. Tipos de datos y atributos de objetos

5.1 2.1 Inspección de tipos

Aplique a las variables de la sección 1 las funciones:

  • class()
  • typeof()
  • mode()
# Escriba aquí su código

5.1.1 Pregunta

Complete la siguiente tabla con sus resultados.

Variable class() typeof() mode()
nombre_curso
cantidad_estudiantes
promedio_inicial
curso_activo

6 Sección 3. Objetos atómicos y recursivos

6.1 3.1 Vectores

Cree un vector numérico llamado notas con los siguientes valores:

78, 85, 90, 67, 74, 88, 92, 59

# Escriba aquí su código

Calcule:

  • media
  • mediana
  • valor máximo
  • valor mínimo
# Escriba aquí su código

6.2 3.2 Secuencias y repeticiones

Genere:

  1. Una secuencia del 1 al 20.
  2. Una secuencia del 0 al 100 de 10 en 10.
  3. Un vector que repita "A" cinco veces.
# Escriba aquí su código

6.2.1 Pregunta

¿Para qué podría ser útil la función seq() en una tarea de análisis de datos?

Respuesta:

6.3 3.3 Matrices

Construya una matriz de 3 filas y 4 columnas con los números del 1 al 12.

# Escriba aquí su código

Obtenga:

  • sus dimensiones
  • el elemento de la fila 2, columna 3
  • la segunda fila completa
  • la tercera columna completa
# Escriba aquí su código

6.4 3.4 Listas

Cree una lista llamada registro que contenga:

  • un nombre
  • una edad
  • un vector de tres calificaciones
  • una condición lógica de aprobación
# Escriba aquí su código

Acceda a:

  • el nombre
  • la edad
  • la segunda calificación
# Escriba aquí su código

7 Sección 4. Creación y exploración de un data.frame

7.1 4.1 Construcción de la base de datos

Cree el siguiente data.frame llamado solicitudes:

  • id: 1 al 10
  • estudiante: "Ana", "Luis", "María", "José", "Sofía", "Carlos", "Elena", "Pablo", "Marta", "Diego"
  • nota: 85, 67, 90, NA, 72, 88, 91, 64, 79, 70
  • avance: "alto", "medio", "alto", "bajo", "medio", "alto", "alto", "bajo", "medio", "medio"
  • entrego: TRUE, TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE, TRUE
# Escriba aquí su código

Explore la estructura del objeto con:

  • str()
  • summary()
  • names()
  • dim()
# Escriba aquí su código

7.2 4.2 Acceso a componentes

Obtenga:

  1. La columna nota.
  2. Las filas 1 a 5.
  3. Las filas donde entrego == FALSE.
  4. El nombre del estudiante en la fila 3.
  5. Las columnas estudiante y avance.
# Escriba aquí su código

8 Sección 5. Coerción y limpieza básica de datos

8.1 5.1 Verificación de tipos

Compruebe si las siguientes columnas son del tipo esperado:

  • nota → numérica
  • avance → carácter o factor
  • entrego → lógico

Use funciones is.*.

# Escriba aquí su código

8.2 5.2 Coerción

Cree un vector llamado valores_texto con:

"10", "25", "30", "40", "50"

Conviértalo a numérico y calcule su promedio.

# Escriba aquí su código

Ahora cree otro vector:

"10", "25", "hola", "40"

Intente convertirlo a numérico y explique qué sucede.

# Escriba aquí su código

8.2.1 Pregunta

¿Qué riesgo existe al coercionar datos sin revisar previamente su contenido?

Respuesta:

8.3 5.3 Tratamiento de valores faltantes

Identifique cuántos NA existen en la columna nota.

# Escriba aquí su código

Realice dos alternativas:

  1. Crear una copia del data.frame eliminando la fila con NA.
  2. Crear otra copia sustituyendo el NA por el promedio de las notas disponibles.
# Escriba aquí su código

8.3.1 Pregunta

¿Cuál de las dos estrategias considera más adecuada para este caso y por qué?

Respuesta:

9 Sección 6. Manipulación de datos

9.1 6.1 Filtrar

Genere subconjuntos con:

  1. Estudiantes con nota mayor o igual a 80.
  2. Estudiantes con avance == "alto".
  3. Estudiantes que no entregaron.
  4. Estudiantes con nota mayor a 70 y avance distinto de "bajo".
# Escriba aquí su código

9.2 6.2 Ordenar

Ordene el data.frame de mayor a menor por nota.

# Escriba aquí su código

9.2.1 Pregunta

¿Qué utilidad tiene ordenar los datos antes de analizarlos o visualizarlos?

Respuesta:

9.3 6.3 Transformar

Agregue una nueva columna llamada estado con la siguiente regla:

  • "Aprobado" si nota >= 70
  • "Reprobado" si nota < 70
  • "Sin dato" si la nota es NA
# Escriba aquí su código

Agregue otra columna llamada riesgo con la siguiente lógica:

  • "Alto" si nota < 70 o entrego == FALSE
  • "Medio" si nota está entre 70 y 79
  • "Bajo" si nota >= 80 y entrego == TRUE
# Escriba aquí su código

10 Sección 7. Resumen e interpretación

10.1 7.1 Resúmenes básicos

Obtenga:

  • promedio de nota
  • cantidad de aprobados
  • cantidad de reprobados
  • cantidad por nivel de avance
  • cantidad por nivel de riesgo
# Escriba aquí su código

10.2 7.2 Interpretación

Redacte un breve análisis de 5 a 8 líneas respondiendo:

  • ¿Qué problemas de calidad de datos observó?
  • ¿Qué transformaciones fueron necesarias?
  • ¿Qué información nueva se obtuvo al crear estado y riesgo?
  • ¿Por qué la preparación de datos es importante antes de modelar o visualizar?

Respuesta:

11 Sección 8. Ejercicio integrador

Construya un nuevo data.frame llamado proyectos con al menos 8 registros y las siguientes columnas:

Luego realice las siguientes tareas:

  1. Revisar estructura y tipos.
  2. Cambiar el tipo de una columna si es necesario.
  3. Crear una columna derivada llamada categoria_presupuesto con valores:
    • "Bajo"
    • "Medio"
    • "Alto"
  4. Filtrar los proyectos de alta prioridad.
  5. Ordenar por presupuesto de mayor a menor.
  6. Resumir cuántos proyectos hay por estado.
# Escriba aquí su código

11.0.1 Interpretación final

Explique qué pasos de preparación y manipulación de datos aplicó en este ejercicio integrador.

Respuesta:

12 Cierre

12.1 Entregables esperados

El estudiante debe entregar:

  • Archivo .Rmd
  • Archivo renderizado (HTML o PDF)
  • Respuestas interpretativas completas
  • Código ejecutable sin errores

12.2 Criterios de evaluación sugeridos

  • Uso correcto de sintaxis en R
  • Aplicación de objetos y tipos de datos
  • Manipulación adecuada del data.frame
  • Uso de coerción y limpieza de datos
  • Interpretación técnica de resultados
  • Orden y claridad del documento