Herramientas avanzadas de investigación - Programación en R
El propósito del curso es proveer a los estudiantes de herramientas de programación y análisis de datos adecuados para enfrentar la resolución de un problema científico. El objetivo del curso es conocer y profundizar en elementos de programación con aplicación en análisis espacial de datos a través de la utilización de la herramienta de programación R.
El contenido del curso de divide en dos partes: programación básica y aplicaciones en análisis de datos espaciales. La primera, profundiza en los elementos y lógica de programación aplicables a cualquier lenguaje de programación a través de comandos/ejercicios aplicativos en R, posteriormente se efectúan prácticas orientadas a la lectura, tratamiento y análisis de datos espaciales. El contenido en esta página corresponde a la primera parte del curso: PROGRAMACIÓN BÁSICA EN R.
Bibliografía
- ¨Hands-On Programming with R¨. Descargar aquí
- Existe amplia documentación en internet, un buen sitio para empezar aquí o aquí
- Más bilbiografía útil puede descargarse aquí
- R es un lenguaje de programación y un software de código abierto por lo cual es sencillo encontrar ayuda en línea, foros, etc.
Clase 1-2 08-09/05/2015
- Introducción a R, tipos de datos.
Actividad individual
- Revisar/ Estudiar a profundidad el capítulo 3 y los apéndices A,B y C del libro ¨Hands-On Programming with R¨. Descargar aquí
- Crear matrices a partir de un vector numérico extenso en distintas dimensiones
- Explorar la ayuda de R para hacer uso de algunas funciones desconocidas
- Revisar operadores lógicos y tablas de verdad
Clase 3-4 21-22/05/2018
- Subconjuntos de datos, lectura y escritura de archivos.
Actividad individual
- Revisar/ Estudiar a profundidad los capitulos 4 y 5 del libro ¨Hands-On Programming with R¨.
- Revisar como agregar una fila o una columna a un data frame. Unir dos dataframes de al menos dos observaciones cada uno tanto de manera horizontal como vertical.
- Explorar la evaluación del operador lógico de negación (!)
- Explorar los argumentos de la función
read.table
- Responda las siguientes interrogantes sobre el data frame
df.observaciones :
- ¿Cuántas observaciones tienen un valor mayor a 3 y menor a 10?
- ¿Cuántas observaciones en el mes de abril tienen un valor mayor a 5?
- ¿Cuál es el VALOR medio de cada mes?
Clase 5-6 28-29/05/2018
- Estructuras condicionales y de repetición. Gráficos básicos.
Actividad individual
Mejorar las gráficas con más opciones de parámetros que personalicen la visualización, usando distintos colores, formas de puntos, etiquetas, textos, etc.
Crear un data frame llamado modelos que almacena la información de los resultados de 8 modelos matemáticos (cada uno como una columna) a evaluar (siguiendo el siguiente patrón: y1= x+3 ; y2= x^2+x+3 ; y3=x^3+ x^2 +x+3 ; y4=…..) cuya información de entrada corresponde a un vector x= c(1,2,3,4,5,6,7,8,9,10). Por lo tanto, el data frame contiene 8 columnas y 10 filas. Utilizar una estructura repetitiva (bucle) para calcular los valores y1, y2,y3…etc. Finalmente visualizar los ocho modelos en un solo gráfico de tal manera que permita comparar las curvas visualmente y guardarlo en disco. Nota: 1. El eje de las absisas corresponderá a los valores x. 2. La función para obtener la transpuesta de una matriz es t(matriz).
Trabajo
- Entrega Miércoles 6 de junio del 2018.
- En base al dataframe df.observaciones, considere el campo VALOR para los siguientes cálculos de x. Dado los 3 rangos:
- Utilizando una estructura repetitiva (bucle), elabore un dataframe de 3 columnas (RangoA, RangoB, RangoC) y 12 filas (correspondientes a los meses del año) que contengan los valores medios de x para cada caso RANGO-MES. Guarde este data frame como un archivo .csv con el nombre “Medias_rango_mes_2013.csv”.
- Utilizando una estructura repetitiva (bucle), elabore tres gráficas, una por cada RANGO, donde el eje de las absisas denota el mes y las ordenadas el valor medio calculado. Adicionalmente visualizar la media anual como umbral del referencia (línea horizontal). Guardar los gráficos resultantes con los nombres “RangoA_2003.pdf”, “RangoB_2003.pdf” y “RangoC_2003.pdf”. Nota: El comando
paste sirve para concatenar/unir strings o caracteres.
- Enviar el trabajo al correo johanna.orellana@ucuenca.edu.ec. Enviar una carpeta comprimida con el formato apellido_nombre que contenga: el script en R y todos los archivos resultantes (un archivo .csv y tres archivos .pdf).
Clase 7-8 04-05/06/2018
- Funciones, manejo de fechas. Funciones de S.O.
Actividad individual
El ejercicio para manejar una lista de archivos y extraer información a partir de los nombres de dichos archivos se encuentra descrito en el enlace principal de esta sesión.
Crear una función que reciba dos argumentos: un data frame como primer argumento y el nombre de alguno de sus campos como segundo argumento y retorne la columna (campo) deseado. Modifique los ejemplos tratados en sesiones pasadas para utilizar esta función.
Utilizando el archivo file_temperatura.txt responder las siguientes preguntas:
- ¿Cuál es el año-mes con mayor temperatura media.?
- ¿Cuál es el año-mes con mayor y menor falta de datos?. Considere que la serie temporal está incompleta.
- ¿Qué años-meses poseen menos del 80% de datos.?
- ¿Cuál es el año-mes-día donde se presentó el pico de temperatura en el periodo de estudio?. Crear una funcion que recibe un data frame (
Fecha, Variable) y devuelve el año-mes-dia donde se presentó la el valor máximo de la Variable dentro del periodo de estudio de datos. Para este caso particular correspondería a la máxima temperatura.
Clase 5 12-13/06/2018
- Paquetes, aplicación de funciones sobre conjuntos y depuración (debugging).
Actividad individual
- Esta actividad será evaluada de acuerdo al tiempo de ejecución de su script. Los 3 archivos para trabajar corresponden a datos con frecuencia de 5 minutos del periodo “2010/1/1” a “2015/1/1” equivalente a 525889 time steps. Cada archivo contiene la información de una variable: temperatura(505889), precipitación(510889) y reflectividad(507889) respectivamente. Las series temporales de los archivos están incompletas.
El objetivo es obtener un data frame de los casos completos para las tres variables paralelamente. Además, se debe generar un data frame que contiene estadísticos mensuales de cada variable (media, desviación estándar, max, min). Finalmente visualizar estos resultados numéricos a través de gráficos. Bonus: ¿Cuál es el año-mes con mayor pérdida de datos global?
Clase 6 18-19/06/2018
- Gráficos avanzados
Actividad individual
- Modificar los ejemplos implementados en clase para manipular rampas de color, posición de leyenda, etiquetas,etc.
- Usar los data frames
df_events_results y compile_df_events_results_details para generar otros graficos utilizando los distintos campos, criterios de agrupación.
Clase 7 25-26/06/2018
- SQL y data.table package
Actividad individual
- Trabajo descrito en el enlace principal de esta sesión.
- Práctica descrita para uso de comandos sqldf.
- Averiguar como setear claves combinadas en data.tables.
- Revisar el tema de indexación en bases de datos.
Clase 8 27/06/2018
- Prueba I
Problema
Dado el archivo file_extended_RR_MRR_Balzain.txt descargar que contiene la información de tasa de lluvia registrada por un radar vertical MRR del día 13-abril-2017 a una frecuencia de 1 minuto para 30 rangos de altitude (alturas = 100m, 200m, 300m, etc).
- Generar un dataframe que contiene la media horaria de cada uno de los niveles de altura. 24horas x 30alturas y guardarlo como archivo de texto “MRR_horario.txt”. El data frame debe tener la siguiente estructura.
Fecha R100 R200 R300 R400 … R3100
Los valores en el campo Fecha deben mantener este formato: 2017-04-13 00:00.
- Indicar a que altura-hora ocurrió la mayor tasa de lluvia.
- Indicar si existió alguna hora del día donde todo el perfil vertical de precipitación fue igual a 0, es decir no llovió.
- Crear una función, que dada la altura de interés y el dataframe original del radar vertical retorna la precipitación acumulada diaria a esa altura específica.
**Nota: Enviar su script(s) y el archivo MRR_horario.txt en una carpeta comprimida “apellido_nombre_PRUEBA.zip” al correo johanna.orellana@ucuenca.edu.ec hasta las 17:00 del día miércoles 27 de junio de 2018.
Clase 9 9-10/07/2018
- Código Eficiente de R
Actividad individual
- Genere el mapa del sitio de estudio de su tesis.