R es un entorno de software libre para la computación estadística y graficación. Se compila y ejecuta en una amplia variedad de plataformas UNIX, Windows y MacOS.
RStudio es un conjunto de herramientas integradas diseñadas para ayudarle a ser más productivo con R y Python. Incluye una consola, un editor que resalta la sintaxis y admite la ejecución directa del código, y una variedad de herramientas robustas para trazar, ver el historial, depurar y gestionar el espacio de trabajo.
R Para windows https://www.freestatistics.org/cran/
R para Mac https://www.freestatistics.org/cran/
Rstudio para Windows, Mac , linux, etc. https://www.rstudio.com/products/rstudio/download/#download
##Vectores
Por defecto lo vectores en R con vectores columna, para incluirlos manualmente se usa la letra “c” en minúscula; los elementos del vector van separados por comas. El nombre del vector puede ser una palabra o letras puede contener números pero no se recomienda que estos vayan al comienzo de nombre. Para asignar el nombre se hace uso de simbolo “\(=\)”
TRM=c(4289.67, 4375.33, 4361.60, 4415.60, 4433.29, 4456.05)
Si el vector contiene elementos no numéricos “categóricos”, los elementos del vector deben llevar doble comilla ““. Por ejemplo
Col=c("Verde", "Verde", "Morado", "Blanco", "Morado", "Blanco")
En Rstudio los objetos creados a parecerán en la ventana superior izquierda en la pestaña Emvironment
Un marco de datos o Data frame (data.frame), es el nombre que recibe las tablas de datos en R. Tiene la caracteristica de tener igual número de filas para un conjunto de vectores columna.
df=data.frame(TRM, Col)
head(df)
## TRM Col
## 1 4289.67 Verde
## 2 4375.33 Verde
## 3 4361.60 Morado
## 4 4415.60 Blanco
## 5 4433.29 Morado
## 6 4456.05 Blanco
attach(df)
## The following objects are masked _by_ .GlobalEnv:
##
## Col, TRM
names(df)
## [1] "TRM" "Col"
No olviden usar las funciones attach y names, luego de crear un marco de datos.
Las matrices son un arreglo por filas y columnas, a diferencia de data frame, las columnas o las filas no suele trabajarse por separado.
m1=matrix(TRM, ncol=2, nrow=3)
m1
## [,1] [,2]
## [1,] 4289.67 4415.60
## [2,] 4375.33 4433.29
## [3,] 4361.60 4456.05
R permite hacer operación entre matrices, calcular inversas , resolver sistemas de ecuaciones y mucho más.
Una lista es el objeto más general de R, estas pueden contener distintos tipos de objetos (vectores, matrices, data.frames) e incluso otras listas. Para llamar los objetos de las listas se usa el doble corchete cuadrado.
lista1=list(m1, df, TRM, Col)
head(lista1[[1]])
## [,1] [,2]
## [1,] 4289.67 4415.60
## [2,] 4375.33 4433.29
## [3,] 4361.60 4456.05
Para la importanción de datos vamos a utilizar las opción Import Dataset que viene incluida en la interfaz de Rstudio en la parte superior derecha, dentro de environment.
Uso de datos abiertos para la búsqueda y obtención de información en Colombia. https://www.datos.gov.co/
Con la url de la API
procesos=read.csv("https://www.datos.gov.co/resource/q6re-36rh.csv")
dim(procesos)
## [1] 1000 22
Con la url del portal del desarrollador, crear usuario y clave API. https://dev.socrata.com/foundry/www.datos.gov.co/q6re-36rh
Para entrar desde google form
df2=read.csv("https://docs.google.com/spreadsheets/d/e/2PACX-1vQFG1qNbO1wndpqYC27XQMrEqUQwoMFil8YS3rIwYQ9TpOkLgj7lrnwqDs0bSWHYioWFrOgsDk-U1bv/pub?gid=242934044&single=true&output=csv", encoding="UTF-8")
Dentro del paquete tidyverse se cuenta con la funcionalidad dplyr (paquete que puede ser instalado por aparte). Este paquete permite que el procesamiento de datos se convierta en un proceso más sencillo. Su construcción permite que la lectura de los datos sea rápida, altamente expresiva, y de mente abierta.
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.0.9
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.2 ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(gapminder)
head(gapminder)
## # A tibble: 6 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.
Entre una de las ventajas que se encuentran en dicho paquete es que los conjuntos de datos los lee en un formato titulado “tibble”. Este formato es el que permite simplicar el procesamiento de una base de datos.
class(gapminder)
## [1] "tbl_df" "tbl" "data.frame"
Como parte de este paquete se cuentan con funcionalidades como el filtrar, el seleccionar variables, hacer resumenes estadísticos y el pipe (una de las más utilizadas).
Generalmente cuando se hace un filtro en la base de datos se utiliza una estructura predeterminada para seleccionar cuáles son esas filas o columnas que se quieren preservar en la base de datos.
(canada <- gapminder[241:252, ])
## # A tibble: 12 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Canada Americas 1952 68.8 14785584 11367.
## 2 Canada Americas 1957 70.0 17010154 12490.
## 3 Canada Americas 1962 71.3 18985849 13462.
## 4 Canada Americas 1967 72.1 20819767 16077.
## 5 Canada Americas 1972 72.9 22284500 18971.
## 6 Canada Americas 1977 74.2 23796400 22091.
## 7 Canada Americas 1982 75.8 25201900 22899.
## 8 Canada Americas 1987 76.9 26549700 26627.
## 9 Canada Americas 1992 78.0 28523502 26343.
## 10 Canada Americas 1997 78.6 30305843 28955.
## 11 Canada Americas 2002 79.8 31902268 33329.
## 12 Canada Americas 2007 80.7 33390141 36319.
Este proceso anterior genera un nuevo set de datos que contiene las variables seleccionadas. Sin embargo, el proceso se puede hacer mucho más simple en con el comando filter() del paquete.
filter(gapminder, lifeExp<29)
## # A tibble: 2 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Rwanda Africa 1992 23.6 7290203 737.
filter(gapminder, country=='Rwanda', year>1979)
## # A tibble: 6 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Rwanda Africa 1982 46.2 5507565 882.
## 2 Rwanda Africa 1987 44.0 6349365 848.
## 3 Rwanda Africa 1992 23.6 7290203 737.
## 4 Rwanda Africa 1997 36.1 7212583 590.
## 5 Rwanda Africa 2002 43.4 7852401 786.
## 6 Rwanda Africa 2007 46.2 8860588 863.
Otra de las ventajas que se presentan es la funcionalidad pipe o tambien conocida por su comando %>% ; esto permite utilizar multiples comandos en solo pocas líneas de código.
Para realizar el comando se utiliza el atajo: Ctrl+Shift+M (Windows) o Cmd+Shift+M (Mac).
gapminder %>% head()
## # A tibble: 6 × 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.
Esto es equivalente a tener un head(gapminder). Lo que hace el pipe es colocar lo que esta al lado izquierdo y lo pasa como una función al lado derecho. A esta función se le pueden agregar muchas más, lo cual simplifica las líneas de código a utilizar.
El comando select se utiliza para subdividir los datos en variables o columnas.
select(gapminder, year, lifeExp)
## # A tibble: 1,704 × 2
## year lifeExp
## <int> <dbl>
## 1 1952 28.8
## 2 1957 30.3
## 3 1962 32.0
## 4 1967 34.0
## 5 1972 36.1
## 6 1977 38.4
## 7 1982 39.9
## 8 1987 40.8
## 9 1992 41.7
## 10 1997 41.8
## # … with 1,694 more rows
## # ℹ Use `print(n = ...)` to see more rows
Aqui también se puede utilziar el pipe para añadir otras operaciones de una manera simplificada.
gapminder %>%
select(year, lifeExp) %>%
head(4)
## # A tibble: 4 × 2
## year lifeExp
## <int> <dbl>
## 1 1952 28.8
## 2 1957 30.3
## 3 1962 32.0
## 4 1967 34.0
Otro ejemplo podría ser:
gapminder %>%
filter(country == "Cambodia") %>%
select(year, lifeExp)
## # A tibble: 12 × 2
## year lifeExp
## <int> <dbl>
## 1 1952 39.4
## 2 1957 41.4
## 3 1962 43.4
## 4 1967 45.4
## 5 1972 40.3
## 6 1977 31.2
## 7 1982 51.0
## 8 1987 53.9
## 9 1992 55.8
## 10 1997 56.5
## 11 2002 56.8
## 12 2007 59.7
Para realizar un resumen estadístico de las variables (donde se reflejen estadísticas como la media, la mediana, la moda, entre otras) se utiliza el comando summarise. Este puede ser implementado dentro de un pipe o simplemente ser llamado para una variable específica.
gapminder %>%
group_by(continent) %>%
summarize(MediaGDPpercap=mean(gdpPercap))
## # A tibble: 5 × 2
## continent MediaGDPpercap
## <fct> <dbl>
## 1 Africa 2194.
## 2 Americas 7136.
## 3 Asia 7902.
## 4 Europe 14469.
## 5 Oceania 18622.
gapminder %>%
group_by(continent,year) %>%
summarize(MediaGDPpercap=mean(gdpPercap))
## `summarise()` has grouped output by 'continent'. You can override using the
## `.groups` argument.
## # A tibble: 60 × 3
## # Groups: continent [5]
## continent year MediaGDPpercap
## <fct> <int> <dbl>
## 1 Africa 1952 1253.
## 2 Africa 1957 1385.
## 3 Africa 1962 1598.
## 4 Africa 1967 2050.
## 5 Africa 1972 2340.
## 6 Africa 1977 2586.
## 7 Africa 1982 2482.
## 8 Africa 1987 2283.
## 9 Africa 1992 2282.
## 10 Africa 1997 2379.
## # … with 50 more rows
## # ℹ Use `print(n = ...)` to see more rows
Para profundizar en la lógica que hay detrás de las funciones de dplyr se cuenta con la siguiente imágen: https://github.com/rstudio/cheatsheets/blob/main/data-transformation.pdf
Con Tivyverse instalmos un considerable conjunto de paquetes, destinados para la importación hasta para el procesamiento.
Tomado de http://www.seec.uct.ac.za/r-tidyverse
ggplot2 es un sistema para crear gráficos de forma declarativa, basado en La Gramática de los Gráficos. Usted proporciona los datos, le dice a ggplot2 cómo asignar variables a la estética, qué primitivas gráficas utilizar, y él se encarga de los detalles. https://github.com/rstudio/cheatsheets/blob/main/data-visualization-2.1.pdf
#install.packages("tidyverse")
#library(tidyverse)
Vamos a hacer uso de los datos mpg que tiene dentro del paquete tidyverse, estos datos contienen observaciones recogidas por la Agencia de Protección Medioambiental de EE.UU. sobre 38 modelos de coches.