1 Introducción a R

¿De qué se trata?

  • Lenguaje de programación creado con fines estadísticos.
  • Distribución libre.
  • Con retroalimentación de todos los usuarios.
  • Permite crear paqueterías propias.
  • Han aparecido nuevas capacidades para este lenguaje con nuevas paqueterías.

Ventajas

  • Permite hacer prácticamente cualquier análisis estadístico.
  • Permite crear métodos que se pueden utilizar con diferentes datos.
  • Permite automatizar el procesamiento de datos.
  • Permite crear gráficos totalmente editables.
  • No hay un enfoque de caja negra ya que se puede accesar al detalle de todas las funciones.
  • Permite manejar hojas de datos de manera rápida.
  • Permite hacer análisis o cálculos no estrictamente estadísticos (como calcular variables comunitarias a partir de medidas individuales, p. ej. AB, riqueza de especies, etc.)

¿Cómo obtenerlo?

  • Ingresar a: https://cran.r-project.org/
  • Descargar la versión para el sistema operativo que se desea
  • Lo dejamos descargando en lo que seguimos

Algunos ejemplos

Instalamos R

  • Podemos dejar todo tal cual por default.

Sugerencia para trabajar: RStudio

  • Entrar al sitio: https://www.rstudio.com/
  • Descargar la versión para el sistema operativo que se desea
  • Lo dejamos descargando en lo que seguimos

Pantalla principal de R

  • Ver los elementos principales

Instalar RStudio

  • Podemos dejar todo tal cual por default.

Pantalla principal de RStudio

  • Una vez instalado lo abrimos y vemos lo siguiente:
  • Ver los elementos principales

Sugerencia para trabajar: RStudio

¿Qué es RStudio?

  • Integrated Development Environment (IDE) o un entorno de desarrollo integrado para R.
  • Es un entorno para desarrollar proyectos con R.
  • Tiene varias ventajas que facilitan el trabajo con R:
    • Organización por proyectos (cambio de directorio de trabajo automático).
    • Inspección de objetos en el espacio de trabajo.
    • Ventana integrada de gráficos y ayuda.
    • Correr por líneas o selección con ctrl + R, ctrl + enter …
    • Permite guardar líneas de código.
    • Resulta más fácil de trabar con código que en la consola.
    • Son los archivos de código que creas en la ventana de “scripts”
    • Son los archivos del proyecto de RStudio, que incluyen el espacio de trabajo (.wd), el historial (.h) y directorio de trabajo (setwd)

Consola

## [1] 1
## [1] 2
## [1] "1"
## Error in "1" + "1": argumento no-numérico para operador binario
## [1] TRUE
## [1] FALSE

1.1 Conceptos básicos

Tipos de variables

  • Numérica: 1,2,3
  • Carácter: “cadenas de caracteres”
  • Factores: “cadenas de caracteres cifrados como factores”
  • Lógicos: TRUE, FALSE, T, F. Tipos de operadores
  • Lógicos: &, |
  • Relacionales: >, <, >=, <=, ==, !=
  • Matemáticos: + , -, *, /, ^, sqrt, %% (uso de paréntesis)

Hacer las siguientes operaciones en la consola:

  • 1+ 2
  • 1000/99-554/111+ 63
  • 1000/(99-554)/(111+ 63)
  • 1+ “2”
  • “1”+ “2”
  • 3>1
  • 1&3>2
  • 1>2&3>2
  • 1>2|3>2
## [1] 3
## [1] 68.11002
## [1] -0.01263105
## Error in 1 + "2": argumento no-numérico para operador binario
## Error in "1" + "2": argumento no-numérico para operador binario
## [1] TRUE
## [1] TRUE
## [1] FALSE
## [1] TRUE

Hacer las siguientes operaciones en la consola:

  • 4==4
  • 4==8
  • 2>=2
  • 6<=7
  • 4!=5
  • 10^3
  • sqrt(1000)
  • ((5*2)+ 12)>5
  • ((5*50)/4>10|54<100)
## [1] TRUE
## [1] FALSE
## [1] TRUE
## [1] TRUE
## [1] TRUE
## [1] 1000
## [1] 31.62278
## [1] TRUE
## [1] TRUE

Modulo

  • x %% y
  • Da el residuo (número entero) de un número x entre algún múltiplo de y
  • No da el residuo después del punto decimal.
## [1] 0
## [1] 1
## [1] 2
## [1] 4

Ejercicio

  • (4^2)%%8
  • sqrt(100)%%10
  • 5*8+ (8%%5)
## [1] 0
## [1] 0
## [1] 43

1.2 Otros conceptos básicos

Espacio de trabajo (Workspace)

  • Espacio donde vamos a trabajar
  • Se puede cambiar (avanzado)
  • Todos los objetos que se usen en una sesión tienen que estar guardados en el actual espacio de trabajo para poder ser llamados
  • Esto implica que todos los objetos deben ser primero declarados para ser utilizados

Sintaxis básica:

  • Para hacer comentarios se usa “#”.
  • Números escritos como tal.
  • Caracteres van entre “” ó ‘ ‘.
  • Crear objetos con: nombre<-contenido, contenido->nombre, nombre=contenido.
  • Nombres de objetos sin espacios
  • A excepción de los nombres, los espacios no influyen en la sintaxis.
  • Lenguaje sensible a mayúsculas y minúsculas
  • Funciones siempre llevan () aunque no hayan argumentos dentro.

Funciones útiles

  • class()
## [1] "numeric"
## [1] "character"
## [1] "logical"

Utilizar la función class para revisar las clases de los siguientes objetos:

  • 1
  • “1”
  • T

Creando objetos

  • Los objetos una vez creados quedan disponibles en el espacio de trabajo.
  • Se pueden crear mediante ->, <-, =.
  • Todos los objetos que se usen en una sesión tienen que estar guardados en el actual espacio de trabajo para poder ser llamados
    • Esto implica que todos los objetos deben ser primero declarados para ser utilizados
## Error in eval(expr, envir, enclos): objeto 'num_1' no encontrado
## [1] 1
## Error in eval(expr, envir, enclos): objeto 'Num_1' no encontrado
## [1] 3
## Error in num1 + char1: argumento no-numérico para operador binario

Los objetos también pueden ser más cosas:

  • Funciones
  • Gráficos
  • Resultados de algún método
  • Hojas de datos
  • Imágenes
  • Shapes
  • Puntos
  • Cualquier cosa

Crear los siguientes tipos de objetos

  • usar cualquier nombre excepto c (es una función)
  • mi_string <- “Este es una cadena de caracteres o string”
  • mi_num<-80*95+ 63/87

Revisar su clase

Ayuda de R (para funciones)

  • help(función)
  • ??función

Funciones

  • Nombre_de_la_función(argumento1,argumento2,argumento3…)
  • Descripción
  • Uso
  • Ejemplos
  • Referencias
  • En la ayuda vienen qué tipo de variables tiene que ser cada argumento
  • Viene la explicación del método
  • Detalles más específicos de la función
  • En que paquete viene (esto lo vemos después)
    • {vegan}

Buscar la ayuda de las siguientes funciónes, ¿qué hacen?

  • mean
  • sd
  • rep
  • sqrt
  • seq
  • c
## starting httpd help server ... done

1.3 Tipos de objetos

Objetos básicos simples

  • Variables sencillas
    • 1
  • Vectores
    • c(1,2,3,4,5,6,7,8,9,10… n).
  • Data frames
    • Conjunto de vectores acomodados por columnas o renglones.
  • Matrices
    • Como data frames pero solo permiten un tipo de variable en sus entradas.
  • Listas
    • Conjunto de data frames o matrices o vectores o variables.

Funciones útiles v2

  • Para vectores
    • length()
  • Para data frames y matrices:
    • nrow(), ncol()
    • dim()
  • Para listas
    • length()
  • Para todas ellas:
    • str()

Para crear cada uno de esos objetos Se crean con una función determinada

  • Vector
    • Objeto<-c(…)
  • Data frame
    • Objeto<-data.frame(c(…), c(…),…)
  • Matriz
    • Objeto<-matrix(ncol=x,nrow=y)
  • Lista
    • Objeto<-vector(“list”,x)
## [1] 1 2 3 4 5
##   vector1 vector1.1
## 1       1         1
## 2       2         2
## 3       3         3
## 4       4         4
## 5       5         5
##      [,1] [,2]
## [1,]   NA   NA
## [2,]   NA   NA
## [[1]]
## NULL
## 
## [[2]]
## NULL

Crear cada uno de los objetos anteriores:

  • vector1<-c(1,2,3,4,5)
  • df1<-data.frame(vector1, vector1)
  • mat1<-matrix(ncol=2,nrow=2)
  • lista1<-vector(“list”,2)

Ver su estructura Analizar la longitud, número de columnas, renglones y dimensiones

Para accesar cada elemento

  • Vector
    • Vec1[entrada] (solamente un número porque solo tiene una dimensión).
  • Matriz o Data frame
    • Df1[entrada_fila, entrada_columna] (dos números porque tienen dos dimensiones).
  • Lista
    • Lista[[entrada de lista]][entrada_de_vector]
    • Lista[[entrada de lista]][entrada_de_fila, entrada_de_columna]
## [1] 1
## [1] 2
##   vector1 vector1.1
## 1       1         1
## [1] 1 2 3 4 5
## NULL
## [1] 2
## [1] 3
##      [,1] [,2]
## [1,]    8    6
## [2,]   NA   NA
##      [,1] [,2]
## [1,]    8    6
## [2,]    7    7
## [[1]]
## [1] "Hey"
## 
## [[2]]
## [1] "Que"
## [[1]]
##      [,1] [,2]
## [1,]    8    6
## [2,]    7    7
## 
## [[2]]
##   vector1 vector1.1
## 1       1         1
## 2       2         2
## 3       3         3
## 4       4         4
## 5       5         5

Accesar a las siguientes entradas:

  • Posición 10 de vector1
  • Posición 3 de vector1
  • Renglón 2 de df1
  • Entrada 2,2 de df1
  • Columna 1 de df1
  • Entrada 11,10 de df1
  • Entrada 1,2 de mat1
  • Columna 2 de mat1
  • Entrada 7,2 de mat1
  • Entrada 1 de lista1
  • Entrada 2 de lista2

Accesar a las siguientes entradas y sustituirla:

  • mat1[1,1]<-8
  • mat1[1,2]<-6
  • mat1[2,]<-7
  • lista1[[1]][1]<-“Hey”
  • lista1[[2]][1]<-“Que”
  • lista1[[1]][1]<-mat1
  • lista1[[2]][1]<-df1
  • Entrar a la entrada 2,2 de df1 dentro de lista1
  • Entrar a la entrada 1,1 de df1 dentro de lista1

Nombrar elementos

  • names(vector)<-vector de nombres
  • colnames(df)<-vector de nombres
  • rownames(df)<-vector de nombres
  • names(lista)<-vector de nombres
## Obs1 Obs2 Obs3 Obs4 Obs5 
##    1    2    3    4    5
##          Col1 Col2
## muestra1    1    1
## muestra2    2    2
## muestra3    3    3
## muestra4    4    4
## muestra5    5    5
##    C1 C2
## m1  8  6
## m2  7  7
## $lista_A
##      [,1] [,2]
## [1,]    8    6
## [2,]    7    7
## 
## $lista_B
##   vector1 vector1.1
## 1       1         1
## 2       2         2
## 3       3         3
## 4       4         4
## 5       5         5

Crear 2 vectores (vector_a y vector_b), el primero del 1 al 4, y el segundo del 5 al 8. Crear un data frame que se llame datos_nums, donde la col1 se llame: Num1 y la col2: Num2. Accesar mediante corchetes al renglón 2 y columna 1 Accesar mediante corchetes al renglón 4 y columna 2. Sumarlos

Notar el : y su uso, al igual que la asignación de nombre rápida

Otra forma de accesar entradas

  • Vector
    • vector[“nombre_de_la_entrada”]
  • DF
    • df$nombre_de_la_columna[renglón_de_entrada]
  • Matriz
    • mat[nombre_del_renglón,nombre_de_la_columna]
  • Lista
    • lista$nombre_de_entrada_lista[renglón, columna]
## Obs1 
##    1
## [1] 1 2 3 4 5
## [1] 1 2 3 4 5
## m1 m2 
##  8  7
## C1 C2 
##  8  6
##      [,1] [,2]
## [1,]    8    6
## [2,]    7    7
## [1] 8
## [1] 1 2 3 4 5

Sumar los vectores anteriores (vector_a y vector_b) mediante el método $.

Más funciones útiles

  • rep()
  • seq()
  • número:número
  • c()
  • cbind()
  • rbind()
  • as.numeric(), as.character(), as.factor(), as.data.frame(),as.matrix()…
  • unlist()

Averiguar qué hace cada una de las funciones anteriores y utilizarlas para:

  • Repetir 5 veces la entrada 1,1 de datos_nums.
  • Construir una secuencia de 1 a 1000.
  • Contruir una secuencia de 1 a 100 con : y guardarla en sec1.
  • Contruir una secuencia de 101 a 200 con : y guardarla en sec2.
  • Concatenar vector_a y vector_b en objeto vectorsote.
  • cbind_seq<-Aplicar cbind para sec1 y sec2
  • rbind_seq<-Aplicar rbind para sec1 y sec2
  • Aplicar unlist a lista1

Convertir sec1 a caracter (sec1_char) y (sec1_fac) factor Revisar objetos con str y class.

Revisar el objeto cbind_seq Revisen su clase. Sumar la columna 1 y 2 de cbind_seq

Crear un vector de factores (vec_fac) que sea 50 veces “A” y 50 veces “B” (tip, revisen la ayuda de rep)

  • Aplicar cbind vec_fac a cbind_seq
  • Revisen su clase
  • ¿Qué le pasó?
  • Sumar la columna 1 y 2 de cbind_seq
  • ¿Qué pasó?
  • ¿Cómo lo resolverían?

Consejo

  • Para que cada variable (columna) se pueda juntar con otras y se respete el tipo de variable de éste recuerden esta regla:
    • cbind y rbind son funciones que transforman sus argumentos a tipo matrix.
    • Los objetos tipo matriz sólo aceptan un tipo de variable, ya sea númerica o caracter en todas sus columnas.
    • Por eso al combinar, un vector de caracteres con numéricos se convierte todo a caracteres.
    • O mejor aún, crear desde un principio un data frame con las variables deseadas.

Consejo: así se hacen las cosas

## 'data.frame':    100 obs. of  3 variables:
##  $ factor: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
##  $ sec1  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ sec2  : int  101 102 103 104 105 106 107 108 109 110 ...

Consejo: así no (cont.)

  • La lógica nos diría que podríamos convertir en la matriz, algunas variables de tipo factor a numérico, pero la conversión factor * numérico siempre debe ser evitada.
  • ¿Por qué?
  • Como factor es considerado un caracter que determina un nivel para los datos, no conserva una coincidencia con su número (como numérico).
  • Vamos a verlo.
## 'data.frame':    100 obs. of  3 variables:
##  $ vec_fac: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
##  $ sec1   : Factor w/ 100 levels "1","10","100",..: 1 13 24 35 46 57 68 79 90 2 ...
##  $ sec2   : Factor w/ 100 levels "101","102","103",..: 1 2 3 4 5 6 7 8 9 10 ...
## 'data.frame':    100 obs. of  3 variables:
##  $ vec_fac: Factor w/ 2 levels "A","B": 1 1 1 1 1 1 1 1 1 1 ...
##  $ sec1   : num  1 13 24 35 46 57 68 79 90 2 ...
##  $ sec2   : num  1 2 3 4 5 6 7 8 9 10 ...

Data.frame o matrix

  • Siempre usar data.frames.
  • Casi todos los datos se acomodan mejor en un data.frame.
  • Cuando se necesite hacer una conversión a matrix para utilizar alguna función o un caso similar, hacer lo siguiente:
    • Dejar las entradas numéricas en las entradas de la matriz.
    • Los caracteres ponerlos como nombres de columnas y renglones.
    • Si esto no tiene sentido, entonces usar data.frame.

Diferencia entre Factor y Caracter

  • El factor es un caracter que tiene un significado para los datos (p.ej. variable cualitativa que explica otra variable).
  • Los factores se mantienen aunque recortes la hoja de datos.
    • p.ej. tomas algunos datos de tu hoja de datos, sin embargo dentro de los niveles siempre va a aparecer la totalidad de los niveles.
  • La conversión entre factor y caracter si respeta los caracteres o factores deseados.
## [1] A A A B B C
## Levels: A B C
## [1] A A A
## Levels: A B C
## [1] "A" "A" "A"

1.4 Funciones propias

Podemos poner muchos argumentos dentro de la función Se pueden llamar funciones dentro de otras funciones, siempre y cuando se carguen en el espacio de trabajo.

## [1] 10

Crear una función (mi_funcion) que tome como argumento un número (x), le sume la mitad de sí mismo y regrese ese nuevo número.

## [1] 12

Condicional

  • Permiten evaluar la condición deseada
  • Permiten seguir un camino si se cumple la condición y otro en caso de que no suceda esto
## [1] "El número es mayor o igual a 5"

Crear una condicional sobre una variable x de caracter, y definir dos mensajes dependiendo si se cumple o no la variable. * p.ej. chara<-“A”, evaluar si es “A” o no lo es. * imprimir el chara es A o B

## [1] "chara es A"

Ciclos

  • Sirven para repetir una misma operación o procedimiento sobre subsecuentes entradas
  • Permite ahorrar mucho tiempo
## [1] FALSE FALSE FALSE
## [1] 1 2 3

Crear ciclo en el cual a un vector de números (1 * 10) se le multiplique 4.

##  [1]  4  8 12 16 20 24 28 32 36 40

Crear una función (mi_func2) que permita sumar el número anterior a cada entrada de sum_vec. Sin embargo, tener en cuenta que en la primera entrada esto no se puede hacer. En este caso que la entrada sea igual a sí misma.

##  [1]  1  3  6 10 15 21 28 36 45 55

Recomendaciones para hacer funciones propias

  • Utilizar variables, no constantes
  • Esto asegura que se puedan utilizar con cualquier dato.
  • Por lo tanto las hacen funciones útiles en el futuro

Una pequeña nota adelantada

  • Para analizar a detalle funciones propias:
    • Utilizar debug(nombre_de_la_función)
    • Correr la función con los argumentos deseados
  • Cargar funciones propias en otros trabajos
    • Se pueden construir funciones en scripts y cargarlas.
    • Se utiliza la función source(“Nombre_archivo.R”)
    • Se carga la función al espacio de trabajo

Otras funciones útiles

  • which(condición)
  • is.na(datos)
  • ifelse(condición, si se cumple haz esto, si no, haz esto)
  • apply(datos,por columna o por renglón, función a aplicar)
  • sapply()
  • lapply()

Otras funciones útiles ¿Que es NA?

## Obs3 
##    3
##  Obs1  Obs2  Obs3  Obs4  Obs5 
## FALSE FALSE FALSE FALSE FALSE
## Obs2 
##  "B"
## Obs1 Obs2 Obs3 Obs4 Obs5 
##    1    2    3    4    5
## Col1 Col2 
##    3    3
## muestra1 muestra2 muestra3 muestra4 muestra5 
##        1        2        3        4        5

Utilizar help para ver qué hace cada una de las funciones anteriores. Aplicar las funciones anteriores a base_vec.

En base_vec

  • Encontrar cuál entrada de sec1 == 8
  • Encontrar cuál entrada de vec_fac == “A”
  • Evaluar si la entrada 1,1 de base_vec es “A”
    • Si es el caso imprimir “es A”
    • Si no, imprimir “no es A”
    • Sacar la media de sec1 y sec2 con apply

Recordar:

  • Cualquier variable, función, dato, gráfico, etc. cargado en el espacio de trabajo es un objeto.
  • Funciones requieren de ciertos argumentos con ciertas propiedades para funcionar bien
  • Todo paréntesis debe quedar cerrado, si no aparecen errores muy extraños
  • {} con para marcar funciones que contienen una serie de operaciones

1.5 Paquetes

Un paso más allá: uso de paquetes

  • Los paquetes son conjuntos de funciones que vienen en un paquete.
  • Para usar las funciones contenidas en un paquete hay que descargarlas
  • Y luego cargarlas en el espacio de trabajo
  • ¿Cómo?:
    • Instala el paquete en el disco local (TX mirror recomendado)
      • install.packages(“nombre del paquete”)
    • Una vez instalado
      • library(“nombre del paquete”)
    • Así queda cargado en el espacio de trabajo y ya podemos usar las funciones

Recordar: cada vez que se abre R de nuevo, hay que cargar los paquetes deseados.

Instalar paquetes

## Installing package into 'C:/Users/JonathanVSV/Documents/R/win-library/3.6'
## (as 'lib' is unspecified)
## Error in contrib.url(repos, "source"): trying to use CRAN without setting a mirror

Instalar vegan Cargar vegan

??vegan para sacar la ayuda y ver qué hace

Paquetes personalizados

  • Uno puede crear su propio paquete de funciones
  • Distribuirlo para otros usuarios
  • Sólo se requiere seguir una documentación para informar sobre lo que hace el paquete, cada función, el desarrollador, el tipo de licencia, etc.
  • Estos paquetes se pueden subir en github.com
  • De este sitio también se pueden descargar otros paquetes desarrollados por usuarios .

Otros paquetes

  • vegan: Community Ecology Package.
  • raster: Geographic Data Analysis and Modeling.
  • ggplot2: Create Elegant Data Visualisations Using the Grammar of Graphics.
  • rgeos: Interface to Geometry Engine * Open Source (‘GEOS’).
  • cluster: Finding Groups in Data: Cluster Analysis Extended.
  • nlstools: Tools for Nonlinear Regression Analysis.
  • knitr: A General-Purpose Package for Dynamic Report Generation in R.

consultar: https://cran.r-project.org/web/packages/available_packages_by_name.html

1.6 Lectura y escritura

Hasta ahora todo ha sido dentro de R

  • Importar tablas de Excel
    • Guardar la tabla como csv
    • Importarlo mediante el comando read.csv(“Ruta del archivo.csv”)
    • Las rutas deben de contener únicamente / y no  (default de Windows).
    • Meter la tabla a un objeto
  • Exportar tablas de Excel
    • Guardar la tabla en un objeto
    • Exportar objeto mediante el comando write.csv(obj_resul,”Ruta del archivo.csv”)

Normalmente las variables se acomodan en las columnas, mientras que en los renglones cada observación.

Cargar Revisar el directorio de trabajo utilizando getwd() Escribir el nombre del archivo con todo y extensión Abrir BD. El archivo está disponible en la siguiente liga: https://github.com/JonathanVSV/JonathanVSV.github.io/blob/master/Curso_basico_R/BD.csv

Al entrar a la página presionar la tecla Alt y dar click en el botón de “Raw” para descargarlo a su disco duro.

##   Country Year CO2.emissions..kt. Livestock.production.index..2004.2006...100.
## 1  Mexico 1961           65305.60                                        21.04
## 2  Mexico 1962           63809.47                                        23.02
## 3  Mexico 1963           66361.70                                        22.73
## 4  Mexico 1964           74278.75                                        22.72
## 5  Mexico 1965           75246.84                                        23.88
## 6  Mexico 1966           80930.69                                        26.24
##   Food.production.index..2004.2006...100.
## 1                                   23.70
## 2                                   25.39
## 3                                   26.28
## 4                                   28.48
## 5                                   30.82
## 6                                   33.01
##   Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 1                                   28.71                         8516733
## 2                                   30.30                         8605792
## 3                                   32.50                         9539077
## 4                                   37.06                        11710533
## 5                                   40.09                        12488283
## 6                                   42.08                        12987982
##   GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 1                     359.2909                                57.65615
## 2                     374.4455                                58.18024
## 3                     403.8241                                58.64290
## 4                     463.8963                                59.05559
## 5                     489.2027                                59.43371
## 6                     528.9433                                59.79322
##   Urban.population Urban.population....of.total. Population..total
## 1         20323430                        51.590          39394126
## 2         21311766                        52.428          40649588
## 3         22339277                        53.265          41939880
## 4         23405971                        54.100          43264272
## 5         24511884                        54.931          44623043
## 6         25656215                        55.761          46011038
##   Land.area..sq..km.
## 1            1943950
## 2            1943950
## 3            1943950
## 4            1943950
## 5            1943950
## 6            1943950
## 'data.frame':    162 obs. of  13 variables:
##  $ Country                                     : Factor w/ 3 levels "Guatemala","Mexico",..: 2 2 2 2 2 2 2 2 2 2 ...
##  $ Year                                        : int  1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 ...
##  $ CO2.emissions..kt.                          : num  65306 63809 66362 74279 75247 ...
##  $ Livestock.production.index..2004.2006...100.: num  21 23 22.7 22.7 23.9 ...
##  $ Food.production.index..2004.2006...100.     : num  23.7 25.4 26.3 28.5 30.8 ...
##  $ Crop.production.index..2004.2006...100.     : num  28.7 30.3 32.5 37.1 40.1 ...
##  $ Cereal.production..metric.tons.             : int  8516733 8605792 9539077 11710533 12488283 12987982 13068481 13925652 13843149 15006401 ...
##  $ GDP.per.capita..current.US..                : num  359 374 404 464 489 ...
##  $ Life.expectancy.at.birth..total..years.     : num  57.7 58.2 58.6 59.1 59.4 ...
##  $ Urban.population                            : int  20323430 21311766 22339277 23405971 24511884 25656215 26839108 28070545 29361089 30708544 ...
##  $ Urban.population....of.total.               : num  51.6 52.4 53.3 54.1 54.9 ...
##  $ Population..total                           : int  39394126 40649588 41939880 43264272 44623043 46011038 47429812 48894019 50423481 52029861 ...
##  $ Land.area..sq..km.                          : int  1943950 1943950 1943950 1943950 1943950 1943950 1943950 1943950 1943950 1943950 ...

Otra opción útil para fijar rutas de trabajo es setwd(“Ruta a la que quieres cambiar”)

Recomendación para leer archivos

  • Por default R lee las columnas con caracteres como factores.
  • Recuerden el problema de hacer conversión de factores a números.
  • Recomendación: añadan stringsAsFactors= F como último argumento de read.csv.

Exportar Escribir el nombre del archivo con todo y extensión

1.7 Manejo de un data frame (hoja de datos)

Consultar datos de https://data.worldbank.org/ Ver archivos y ver de qué se trata ¿Qué nos interesa? Seleccionar por lo menos 3 variables. Acomodar datos para importar desde Excel Guardar como separado por comas (.csv) Importar una hoja de datos Guardarlo en un objeto Ver su estructura Describir la hoja de datos

Se pueden filtrar datos mediante

  • which(datos cumplen una condición)
  • Devuelve los renglones que cumplen con la condición de alguna columna
  • Luego seleccionar dichos datos
    • P.ej. temp<-which(datos$var1 ==x)
    • datos[temp,] #para selccionar todas las columnas de esos renglones se deja vacía la segunda entrada

subset(datos, seleccionar los datos que cumplan con esta condición) datos2<-subset(datos,datos$var1==x)

##   Country Year CO2.emissions..kt. Livestock.production.index..2004.2006...100.
## 1  Mexico 1961           65305.60                                        21.04
## 2  Mexico 1962           63809.47                                        23.02
## 3  Mexico 1963           66361.70                                        22.73
## 4  Mexico 1964           74278.75                                        22.72
## 5  Mexico 1965           75246.84                                        23.88
## 6  Mexico 1966           80930.69                                        26.24
##   Food.production.index..2004.2006...100.
## 1                                   23.70
## 2                                   25.39
## 3                                   26.28
## 4                                   28.48
## 5                                   30.82
## 6                                   33.01
##   Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 1                                   28.71                         8516733
## 2                                   30.30                         8605792
## 3                                   32.50                         9539077
## 4                                   37.06                        11710533
## 5                                   40.09                        12488283
## 6                                   42.08                        12987982
##   GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 1                     359.2909                                57.65615
## 2                     374.4455                                58.18024
## 3                     403.8241                                58.64290
## 4                     463.8963                                59.05559
## 5                     489.2027                                59.43371
## 6                     528.9433                                59.79322
##   Urban.population Urban.population....of.total. Population..total
## 1         20323430                        51.590          39394126
## 2         21311766                        52.428          40649588
## 3         22339277                        53.265          41939880
## 4         23405971                        54.100          43264272
## 5         24511884                        54.931          44623043
## 6         25656215                        55.761          46011038
##   Land.area..sq..km.
## 1            1943950
## 2            1943950
## 3            1943950
## 4            1943950
## 5            1943950
## 6            1943950
##       Country Year CO2.emissions..kt.
## 40     Mexico 2000         398382.880
## 94  Guatemala 2000           8368.094
## 148       USA 2000        5693684.894
##     Livestock.production.index..2004.2006...100.
## 40                                         86.83
## 94                                         72.93
## 148                                        97.48
##     Food.production.index..2004.2006...100.
## 40                                    88.41
## 94                                    80.78
## 148                                   95.98
##     Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 40                                    88.51                        27995057
## 94                                    84.77                         1160727
## 148                                   94.66                       342628299
##     GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 40                      6720.902                                74.29973
## 94                      1655.596                                67.77102
## 148                    36449.855                                76.63659
##     Urban.population Urban.population....of.total. Population..total
## 40          76006974                        74.722         101719673
## 94           5257631                        45.127          11650743
## 148        223069137                        79.057         282162411
##     Land.area..sq..km.
## 40             1943950
## 94              107160
## 148            9161920
##   Country Year CO2.emissions..kt. Livestock.production.index..2004.2006...100.
## 1  Mexico 1961           65305.60                                        21.04
## 2  Mexico 1962           63809.47                                        23.02
## 3  Mexico 1963           66361.70                                        22.73
## 4  Mexico 1964           74278.75                                        22.72
## 5  Mexico 1965           75246.84                                        23.88
## 6  Mexico 1966           80930.69                                        26.24
##   Food.production.index..2004.2006...100.
## 1                                   23.70
## 2                                   25.39
## 3                                   26.28
## 4                                   28.48
## 5                                   30.82
## 6                                   33.01
##   Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 1                                   28.71                         8516733
## 2                                   30.30                         8605792
## 3                                   32.50                         9539077
## 4                                   37.06                        11710533
## 5                                   40.09                        12488283
## 6                                   42.08                        12987982
##   GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 1                     359.2909                                57.65615
## 2                     374.4455                                58.18024
## 3                     403.8241                                58.64290
## 4                     463.8963                                59.05559
## 5                     489.2027                                59.43371
## 6                     528.9433                                59.79322
##   Urban.population Urban.population....of.total. Population..total
## 1         20323430                        51.590          39394126
## 2         21311766                        52.428          40649588
## 3         22339277                        53.265          41939880
## 4         23405971                        54.100          43264272
## 5         24511884                        54.931          44623043
## 6         25656215                        55.761          46011038
##   Land.area..sq..km.
## 1            1943950
## 2            1943950
## 3            1943950
## 4            1943950
## 5            1943950
## 6            1943950
##       Country Year CO2.emissions..kt.
## 40     Mexico 2000         398382.880
## 94  Guatemala 2000           8368.094
## 148       USA 2000        5693684.894
##     Livestock.production.index..2004.2006...100.
## 40                                         86.83
## 94                                         72.93
## 148                                        97.48
##     Food.production.index..2004.2006...100.
## 40                                    88.41
## 94                                    80.78
## 148                                   95.98
##     Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 40                                    88.51                        27995057
## 94                                    84.77                         1160727
## 148                                   94.66                       342628299
##     GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 40                      6720.902                                74.29973
## 94                      1655.596                                67.77102
## 148                    36449.855                                76.63659
##     Urban.population Urban.population....of.total. Population..total
## 40          76006974                        74.722         101719673
## 94           5257631                        45.127          11650743
## 148        223069137                        79.057         282162411
##     Land.area..sq..km.
## 40             1943950
## 94              107160
## 148            9161920

Ver los valores únicos hay en una variable * País (Country) * Year trasponer datos de Country Promedio de variable de emisiones de C02 Desviación estándar de emisiones de C02

## [1] Mexico    Guatemala USA      
## Levels: Guatemala Mexico USA
## [1] 162
## [1] 1685032
## Warning in mean.default(datos$Country): argument is not numeric or logical:
## returning NA
## [1] NA
## [1] 15.63411
##      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14]
## [1,] 1961 1962 1963 1964 1965 1966 1967 1968 1969  1970  1971  1972  1973  1974
##      [,15] [,16] [,17] [,18] [,19] [,20] [,21] [,22] [,23] [,24] [,25] [,26]
## [1,]  1975  1976  1977  1978  1979  1980  1981  1982  1983  1984  1985  1986
##      [,27] [,28] [,29] [,30] [,31] [,32] [,33] [,34] [,35] [,36] [,37] [,38]
## [1,]  1987  1988  1989  1990  1991  1992  1993  1994  1995  1996  1997  1998
##      [,39] [,40] [,41] [,42] [,43] [,44] [,45] [,46] [,47] [,48] [,49] [,50]
## [1,]  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010
##      [,51] [,52] [,53] [,54] [,55] [,56] [,57] [,58] [,59] [,60] [,61] [,62]
## [1,]  2011  2012  2013  2014  1961  1962  1963  1964  1965  1966  1967  1968
##      [,63] [,64] [,65] [,66] [,67] [,68] [,69] [,70] [,71] [,72] [,73] [,74]
## [1,]  1969  1970  1971  1972  1973  1974  1975  1976  1977  1978  1979  1980
##      [,75] [,76] [,77] [,78] [,79] [,80] [,81] [,82] [,83] [,84] [,85] [,86]
## [1,]  1981  1982  1983  1984  1985  1986  1987  1988  1989  1990  1991  1992
##      [,87] [,88] [,89] [,90] [,91] [,92] [,93] [,94] [,95] [,96] [,97] [,98]
## [1,]  1993  1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004
##      [,99] [,100] [,101] [,102] [,103] [,104] [,105] [,106] [,107] [,108]
## [1,]  2005   2006   2007   2008   2009   2010   2011   2012   2013   2014
##      [,109] [,110] [,111] [,112] [,113] [,114] [,115] [,116] [,117] [,118]
## [1,]   1961   1962   1963   1964   1965   1966   1967   1968   1969   1970
##      [,119] [,120] [,121] [,122] [,123] [,124] [,125] [,126] [,127] [,128]
## [1,]   1971   1972   1973   1974   1975   1976   1977   1978   1979   1980
##      [,129] [,130] [,131] [,132] [,133] [,134] [,135] [,136] [,137] [,138]
## [1,]   1981   1982   1983   1984   1985   1986   1987   1988   1989   1990
##      [,139] [,140] [,141] [,142] [,143] [,144] [,145] [,146] [,147] [,148]
## [1,]   1991   1992   1993   1994   1995   1996   1997   1998   1999   2000
##      [,149] [,150] [,151] [,152] [,153] [,154] [,155] [,156] [,157] [,158]
## [1,]   2001   2002   2003   2004   2005   2006   2007   2008   2009   2010
##      [,159] [,160] [,161] [,162]
## [1,]   2011   2012   2013   2014

Ordenar

  • sort()
    • Devuelve la variable ordenada.
  • order()
    • Devuelve las posiciones de los elementos en orden.
    • Es la más útil para trabajar con hojas de datos.
##  [1] 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
## [16] 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990
## [31] 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
## [46] 2006 2007 2008 2009 2010 2011 2012 2013 2014
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## [26] 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
## [51] 51 52 53 54
##  [1] 1961 1962 1963 1964 1965 1966 1967 1968 1969 1970 1971 1972 1973 1974 1975
## [16] 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 1987 1988 1989 1990
## [31] 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
## [46] 2006 2007 2008 2009 2010 2011 2012 2013 2014

Buscar en la ayuda para qué sirve cada función Ordenar los datos en orden decrecente en función del año

##   Country Year CO2.emissions..kt. Livestock.production.index..2004.2006...100.
## 1  Mexico 1961           65305.60                                        21.04
## 2  Mexico 1962           63809.47                                        23.02
## 3  Mexico 1963           66361.70                                        22.73
## 4  Mexico 1964           74278.75                                        22.72
## 5  Mexico 1965           75246.84                                        23.88
## 6  Mexico 1966           80930.69                                        26.24
##   Food.production.index..2004.2006...100.
## 1                                   23.70
## 2                                   25.39
## 3                                   26.28
## 4                                   28.48
## 5                                   30.82
## 6                                   33.01
##   Crop.production.index..2004.2006...100. Cereal.production..metric.tons.
## 1                                   28.71                         8516733
## 2                                   30.30                         8605792
## 3                                   32.50                         9539077
## 4                                   37.06                        11710533
## 5                                   40.09                        12488283
## 6                                   42.08                        12987982
##   GDP.per.capita..current.US.. Life.expectancy.at.birth..total..years.
## 1                     359.2909                                57.65615
## 2                     374.4455                                58.18024
## 3                     403.8241                                58.64290
## 4                     463.8963                                59.05559
## 5                     489.2027                                59.43371
## 6                     528.9433                                59.79322
##   Urban.population Urban.population....of.total. Population..total
## 1         20323430                        51.590          39394126
## 2         21311766                        52.428          40649588
## 3         22339277                        53.265          41939880
## 4         23405971                        54.100          43264272
## 5         24511884                        54.931          44623043
## 6         25656215                        55.761          46011038
##   Land.area..sq..km.
## 1            1943950
## 2            1943950
## 3            1943950
## 4            1943950
## 5            1943950
## 6            1943950

1.9 Gráficas avanzadas

En las gráficas anteriores estábamos graficando las variables de los tres países juntas, pero una buena gráfica debería poder separar por país. En la siguiente sección veremos cómo hacer eso.

Gráfica puntos

Histograma

Densidad de probabilidad

Dotchart

Barplot

Line chart

Pie

Boxplot

Hacer una gráfica de alguno de los tipos que vimos ahorita con los datos de “datos”.

1.11 Manejo de errores comunes

No existe la función o el objeto Error: object ‘X’ not found

  • Revisar que el objeto o función esté bien escrita, con mayúsculas, minúsculas, _, etc.
  • Revisar que el objeto o la función haya sido declarada en el espacio de trabajo.
  • Revisar que se haya cargado el paquete en el que viene la función a utilizar, en el espacio de trabajo.

Warnings

  • Escribir warnings() para ver de qué se tratan las advertencias.

  • Normalmente no se tratan de errores críticos, pero pueden avisar sobre detalles importantes a considerar en el análisis (pueden sugerir cambios en el análisis).

  • No existe el archivo Error in file(file, “rt”) : cannot open the connection In addition: Warning message: cannot open file ‘X’: No such file or directory

  • Revisar que la ruta esté escrita correctamente, utilizando:

    • Extensión del archivo (.csv)
    • / en lugar de
    • Algunas veces hay problemas con caracteres especiales (acentos o espacios). Sugerencia: utilizar _ para espacios y evitar acentos.
  • Error de asignación de dimensiones
    Error in X : subscript out of bounds

  • Revisar que el objeto sea del tipo y dimensiones que se piensa (p.ej. data frame y con x renglones y columnas)

  • Revisar la estructura del objeto

  • Error de asignación de dimensiones