Como se señaló en líneas anteriores, el objetivo de la actividad consiste en el análisis del medio físico de un valle de la cordillera cantábrica.
Para efectuar este análisis, contamos con un fichero en formato excel que continene los valores de diversas variables. Este fichero se denomina “valle_cantabrico.xlsx”, y contiene dos hojas:
La hoja “datos” incorpora los datos correspondientes a esas variables, extraidas de un fichero en formato raster.
La hoja “metadata” incluye información sobre el nombre y tipología de las variables.
Los datos están recogidos en cuadrículas de 1 * 1 km (formato ráster) e incluyen las siguientes variables:
Este fichero incluye las siguientes variables:
X Y: localización de cada cuadrícula en coordenadas UTM.
altitud: altitud (en metros) de la cuadrícula.
pendiente: pendiente de la cuadrícula en º.
orientacion: orientación de la cuadrícula en º respecto al N.
tem_superficie: temperatura de la superficie terrestre (en ºC) extraída del sensor MODIS.
escorrentia: escorrentía anual (en mm).
usos: uso principal de cada cuadrícula. Véase hoja
metadata
.
geologia: rocas predominantes en cada cuadrícula.
zonas_protegidas: si la cuadrícula forma parte o no de una zona protegida.
municipio: municipio al que pertenece cada cuadrícula. Véase hoja
metadata
.
Lo primero que debemos realizar es comprobar nuestro directorio de trabajo.
getwd()
## [1] "D:/G2040/TEMA_4_ESDA_Tablas"
Si no estuviéramos en el directorio deseado, sería conveniente establecerlo inmediatamente. Hay que recordar que, a diferencia de Windows, la notación de los subdirectorios en R debe incluir la barra vertical inclinada a la derecha.
# setwd("ruta_completa") # Establece el directorio de trabajo
También estableceremos la semilla, para reproducir los mismos resultados.
set.seed(12)
A continuación instalaremos los paquetes necesarios para la
importación y exportación de ficheros EXCEL. Cuando escribimos
if (!require("readxl"))
estamos pidiendo a R que compruebe
si lo tenemos instalado. Sólo lo instala en caso de no encontrarlo.
if (!require("readxl")) install.packages("readxl")
library(readxl) # Para importar ficheros excel.
if (!require("xlsx")) install.packages("xlsx")
library(xlsx) # Para exportar como fichero excel
A continuación, se importan los datos, bien desde nuestro disco duro (previa descarga) o bien directamente desde internet.
OPCIÓN 1: importación desde el menú. En este caso, se debe acudir
al menú . Posteriormente se abre una ventana en
la que se pueden seleccionar diversas opciones
. Para utilizar este procedimiento
hay que tener instalado el paquete readxl.
OPCIÓN 2: importación desde disco duro. El se puede descargar desde este link.
valle <- read_excel("./valle_cantabrico.xlsx",
sheet = "datos",
na = "-9999")
OPCIÓN 3: importación desde web, sin necesidad de descarga en el disco duro. Requiere superar varios pasos
PASO 1: definir la localización URL (dirección única y específica que se asigna a cada uno de los recursos disponibles en la web)
url <- "http://personales.unican.es/rasillad/docencia/G2040/TEMA_4/valle_cantabrico.xlsx"
destfile <- "valle.xlsx"
curl::curl_download(url, destfile)
valle <- read_excel(destfile,
sheet = "datos", # Nombre de la hoja de cálculo a importar
na = "-9999") # Codificación de datos ausentes -9999
rm(url,destfile)
Se puede retirar la notación científica con la siguiente opción.
options(scipen = 999)
Inicialmente, conviene echar un vistazo a nuestro fichero de trabajo para familiarizarse con sus variables y atributos. Recuérdese que, a la hora de trabajar con las variables de un dataframe podemos utilizar dos procedimientos (ver tema 1):
Usando el signo del dollar ($) y el nombre de la variable:
Cuando el número de variables es muy numeroso, o sus nombres son
complicados, podemos hacer uso de la función attach()
para
acceder directamente a la variable sin necesidad de escribir el nombre
del data frame una y otra vez precediendo al símbolo $
y al
nombre de la variable. Esta función fija nuestro data.frame de trabajo
hasta que utilicemos la función detach()
para deshabilitar
este acceso directo. Sin embargo, hay que tener cuidado, ya que cada vez
que modifiquemos nuestro fichero original la función
attach()
se desactiva.
✅ ATENCIÓN
Comprueba el encabezado y las 5 primeras líneas del fichero.
Determina que tipo de variables (cuantitativa, cualitativa etc…) existen en el fichero.**
Comprueba si existen variables que puedan considerarse como factores,
y en su caso, convierte las variables originales en factores. En vez de
sobreescribir la variable original como factor, es conveniente crear una
nueva variable (por ejemplo, nombreantiguo_factor
), con lo
que cualquier error puede ser subsanado respetando los datos
originales.**
:::
Por ejemplo, la orientación de cada punto de rejilla se expresa mediante un número, que es la orientación en grados. Sin embargo, es habitual que la orientación de las laderas de una montaña se exprese en cuadrantes (N, S, E, W). Por lo tanto, recodifica la variable orientación en cuadrantes, utilizando los siguientes criterios.
Orientación | cuadrante |
---|---|
< 45º | N |
45 a 135 | E |
135 a 225 | S |
225 a 335 | W |
> 335 | N |
📝 RECODIFICACION:
Recodifica la variable orientacion
en una nueva variable
denominada orientacion_factor
siguiendo los criterios del
cuadro anterior.**
📝 DATOS AUSENTES:
Como se ha mencionado anteriormente, los datos ausentes son un verdadero engorro en R. Por lo tanto, es conveniente saber si tenemos este tipo de datos en nuestro data.frame. Comprueba si existen datos ausentes.
Esta fase consiste en la elaboración (tabulación) de todas y cada una de las variables, de acuerdo con lo explicado en el aula. Para el caso de las variables cuantitativas continuas, compara los resultados de los diversos procedimientos para establecer el número de clases:
Para tabular las variables altitud
y la
escorrentía
calcula el número de clases utilizando los
procedimientos objetivos de Sturgess.
Para tabular la variable pendiente
se utilizarán los
siguientes límites de clase: 0-20, 20-35, 35-50, 50-65.
En el caso de la variable temperatura
, deberás
utilizar los siguientes límites de clase: 10-11.5, 11.5-13, 13-14.5,
14.5-16, 16-17.5, 17.5-19.
Para facilitar y dar más rapidez al proceso de elaboración de las
tablas, ahora sí es conveniente activar la función
attach()
. Esta función permite trabajar más rapidamente con
las variables de un data frame, sin tener que utilizar la sintaxis
habitual consistente en escribir data.frame$columna
; a
attach
se le añade como único argumento el nombre del
dataframe.
⚠️ PRECAUCIÓN:
Ten en cuenta que acabas de modificar algunas variables y las has convertido en factores. Si las variables originales han sido duplicadas como factores, deberás operar sobre éstas últimas.
📝 TABULACIÓN DE LA VARIABLE GEOLOGÍA
Elabora la tabla de frecuencias que corresponda a la variable
geología
y contesta a las siguientes preguntas.
¿Cuál es el tipo de roca predominante en el valle?
¿Y el menos abundante?
¿A qué porcentaje corresponde cada categoría?
📝 TABULACIÓN DE LA VARIABLE USOS
Elabora la tabla de frecuencias que corresponda a la variable
usos
y contesta a las siguientes preguntas.
¿Cuál es el uso predominante en el valle? ¿Cuál es su frecuencia relativa?
¿Cuál es el uso menos frecuente? ¿Cuál es su frecuencia absoluta??
¿Cuál la superficie dedicada a pastos?¿Qué porcentaje representa respecto al total del valle?
📝 TABULACIÓN DE LA VARIABLE MUNICIPIO
Elabora la tabla de frecuencias que corresponda a la variable
municipio
y contesta a las siguientes preguntas.
¿Cuál es el municipio más extenso del valle? Si cada píxel representa 2 \(km^2\) ¿Cuál es su superficie en \(km^2\)?
¿Cuál es el municipio más pequeño? ¿Qué porcentaje representa su superficie con respecto a todo el valle?
📝 TABULACIÓN DE LA VARIABLE MUNICIPIO
Elabora la tabla de frecuencias que corresponda a la variable
orientacion
y contesta a la siguiente pregunta.
📝 TABULACIÓN DE LA VARIABLE ZONA PROTEGIDA
Elabora la tabla de frecuencias que corresponda a la variable
zona_protegida
y contesta a las siguientes preguntas.
¿Cuál es el porcentaje de superficie protegida en \(km^2\)?
¿Cuál es la superficie protegida por la figura de monumento natural en \(km^2\)?
📝 TABULACIÓN DE LA VARIABLE ZONA PROTEGIDA
Elabora la tabla de frecuencias que corresponda a la variable
altitud
y contesta a las siguientes preguntas.
¿Cuál es el intervalo de altitudes más frecuente?
¿Qué superficie en \(km^2\) supera los 600 m de altitud?
📝 TABULACIÓN DE LA VARIABLE ESCORRENTÍA
Elabora la tabla de frecuencias que corresponda a la variable
escorrentía
.
📝 TABULACIÓN DE LA VARIABLE PENDIENTE
Elabora la tabla de frecuencias que corresponda a la variable
pendiente
y contesta a las siguientes preguntas.
¿Cuál es el intervalo de pendiente más frecuente?
¿Qué superficie en \(km^2\) supera 35º de pendiente?
📝 TABULACIÓN DE LA VARIABLE TEMPERATURA
Elabora la tabla de frecuencias que corresponda a la variable
temperatura
. Utiliza como límites de las clases los
siguientes (límites de clase prefijados: 10-11.5, 11.5-13, 13-14.5,
14.5-16, 16-17.5, 17.5-19) y contesta a las siguientes
preguntas.
¿Cuál es la frecuencia absoluta del intervalo [16,17.5) de la temperatura?
¿Qué porcentaje sobre el total representan los puntos de rejilla con más de 14,5ºC?
Podríamos exportar todas las tablas a un fichero excel para su
posterior tratamiento. La función write.xlsx
requiere JAVA
y el paquete xlsx.
La exportación de datos de R a Excel se puede lograr con varios
paquetes. El paquete más conocido es xlsx, que proporciona las
funciones write.xlsx()
y write.xlsx2()
. La
función write.xlsx()
utiliza la coma como separador y el
punto como decimal (formato anglosajón) e incluye los siguientes
argumentos:
x Data frame a ser exportado.
file Nombre completo del fichero excel, pe, C:/mis_datos/fichero.xlsx.
sheetName Nombre de la hoja de Excel, por ejemplo “Hoja 1”.
col.names Incluye (TRUE) o no (FALSE) los nombres de las columnas del dataframe en el nuevo fichero excel.
row.names Incluye (TRUE) o no (FALSE) los nombres de las filas del dataframe en el nuevo fichero excel.
append Agregar (TRUE) o no (FALSE) el dataframe a exportar a un archivo Excel ya existente.
showNA Si TRUE, los NA serán celdas vacías.
password Contraseña como cadena de caracteres
La función write.xlsx2()
aplica el punto y coma como
separador y la coma como decimal, pero comparte los mismos
argumentos
Ejemplo básico: para guardar el dataframe cars
:
write.xlsx(cars, "cars.xlsx")
.
Sin embargo, la principal desventaja del paquete anterior es que requiere JAVA instalado en tu ordenador, por lo que si JAVA_HOME no se especifica o si R no encuentra el archivo rJava.dll, el paquete no funcionará.
Las alternativas para exportar la salida de R a XLSX que no requieren JAVA son los paquetes openxlsx y writexl:
Por un lado, la función write.xlsx()
de
openxlsx exporta un data frame o una lista de data frames así
write.xlsx(data_frame, "nombre.xlsx")
Por otro lado, writexl proporciona la función
write_xlsx()
que exporta data frames así:
write_xlsx(data_frame, "nombre.xlsx")
.