Objetivo: En este documento se presentan los primeros pasos en R, desde la instalación del programa y creación de proyectos, hasta la lectura y primeros pasos de análisis de bases de datos.
Además, de la creación de objetos, la creación de vectores, la asignación de variables, la creación de secuencias de números, la redondear números, entre otros.
La instalación de R y RStudio se puede hacer desde la página web posit.com. Para esto:
Descargue e instale R desde el link https://cran.rstudio.com/, aquí encontrara el paso a paso:
Para Windows
Para Mac
Haz clic en el enlace «Download R for macOS»
Descarga el instalador haciendo clic en el enlace que dice **R-X.X.X.pkg** (donde `X.X.X` es el número de la versión más reciente).
Una vez descargado, abre el archivo `.pkg`.
Sigue las instrucciones del asistente de instalación, aceptando los términos de la licencia y seleccionando las opciones predeterminadas.
Abre tu navegador web y visita la página oficial de RStudio: https://posit.co/download/rstudio-desktop/
Para Windows
Haz clic en «Products» y selecciona «RStudio».
En la página de RStudio, haz clic en «Download RStudio».
Selecciona «RStudio Desktop» y haz clic en «Download RStudio for Windows».
Descarga el instalador y ejecuta el archivo descargado.
Sigue las instrucciones del asistente de instalación, aceptando los términos de la licencia y seleccionando las opciones predeterminadas.
Para Mac
Registrarse en GitHub:
Abre tu navegador web y visita la página de registro de GitHub: https://github.com/join
Haz clic en «Sing in».
Sigue las instrucciones para crear tu cuenta con tu dirección de correo electrónico académico
Verifica tu dirección de correo electrónico.
Solicitar la cuenta de GitHub para Estudiantes:
Abre tu navegador web y visita la página de GitHub Education: https://education.github.com/discount_requests/new
Haz clic en «Get benefits» bajo la sección «Student».
Completa el formulario con tu información personal y académica. Es posible que necesites proporcionar una prueba de tu estatus de estudiante, como tu carnet o el certificado de matricula.
Envía tu solicitud y espera la aprobación de GitHub Education. Esto puede tardar algunos días.
Activar GitHub Copilot:
Una vez que tengas tu cuenta de GitHub para estudiantes aprobada, ve a https://github.com/features/copilot
2. Haz clic en «Sign up for GitHub Copilot» y sigue las instrucciones para activar Copilot en tu cuenta.
Usar GitHub Copilot con RStudio
Abre RStudio.
Activa GitHub Copilot en «Tools» y «Global options»
GitHub Copilot es una herramienta de inteligencia artificial desarrollada por GitHub y OpenAI que ayuda a los desarrolladores a escribir código más rápido y de manera más eficiente al sugerir líneas de código o funciones completas basadas en el contexto del código en el que están trabajando. Aunque GitHub Copilot se integra mejor con Visual Studio Code (VS Code), se puede usar en combinación con RStudio para mejorar la productividad en el desarrollo de código en R. Aquí te explico cómo puede ser útil:
Generación de Código Automática:
GitHub Copilot puede sugerir fragmentos de código, funciones y estructuras completas basadas en comentarios y el código que estás escribiendo.
Esto puede ahorrar tiempo y reducir errores al escribir código repetitivo o estándar.
Mejora de la Productividad:
Aprendizaje y Educación:
Copilot puede ser una herramienta educativa útil para aprender nuevas funciones y mejores prácticas de programación en R al sugerir soluciones a problemas comunes.
Puede actuar como un tutor que sugiere mejoras y alternativas al código que escribes.
Reducción de Errores:
Exploración de Nuevas Funcionalidades:
Un proyecto en R es una estructura de trabajo que ayuda a organizar y gestionar tu código, datos, resultados y otros archivos relacionados con un análisis o desarrollo en R. Utilizar proyectos en RStudio, facilita la gestión de múltiples archivos y la configuración del entorno de trabajo, asegurando que todo lo necesario para el análisis esté en un solo lugar.
Directorio de Trabajo:
Configuración del Entorno:
Facilidad de Compartir:
Aquí tienes una guía paso a paso para crear un proyecto en RStudio:
Abrir RStudio:
Crear un Nuevo Proyecto:
File
>
New Project...
.Seleccionar Tipo de Proyecto:
New Directory
si deseas crear un proyecto desde cero,
Existing Directory
si deseas convertir una carpeta
existente en un proyecto, o Version Control
si deseas crear
un proyecto a partir de un repositorio de Git.Para este ejemplo, seleccionaremos
New Directory
.
Elegir un Tipo de Directorio:
New Project
para crear un proyecto vacío.
También puedes elegir R Package
si estás desarrollando un
paquete de R o Shiny Web Application
para aplicaciones web
interactivas.Configurar el Proyecto:
Crear el Proyecto:
Create Project
. RStudio creará el nuevo
proyecto y abrirá una nueva sesión con este proyecto activo.Una vez creado el proyecto, RStudio configurará automáticamente una estructura básica de carpetas y archivos. Aquí hay un ejemplo de cómo podría verse:
mi_proyecto/
│
├── mi_proyecto.Rproj # Archivo de proyecto de RStudio
├── data/ # Carpeta para datos
├── scripts/ # Carpeta para scripts de R
├── output/ # Carpeta para resultados y gráficos
├── README.md # Archivo de documentación del proyecto
└── .git/ # Carpeta de Git si el proyecto está versionado
Abrir el Proyecto:
File
>
Open Project...
para abrir un proyecto existente.Organizar Archivos:
scripts/
,data/
output/
.Cuando trabajas en R y no estás utilizando un proyecto de RStudio, definir rutas a archivos puede ser un poco más desafiante porque no tienes la estructura organizada de un proyecto que facilite la gestión de directorios. Aquí te explico cómo manejar rutas en R en este contexto y algunas prácticas recomendadas.
Ruta Absoluta:
Una ruta absoluta especifica la ubicación completa del archivo en el sistema de archivos, desde la raíz hasta el archivo.
Ejemplo en Windows:
file_path <- "C:/Users/Usuario/Documents/datos/mi_archivo.csv" data <- read.csv(file_path)
Ejemplo en Mac/Linux:
file_path <- "/Users/Usuario/Documents/datos/mi_archivo.csv" data <- read.csv(file_path)
Ruta Relativa:
Una ruta relativa especifica la ubicación del archivo en relación con el directorio de trabajo actual de R. El directorio de trabajo es el directorio en el que R está operando en ese momento.
Para ver o cambiar el directorio de trabajo, puedes usar
getwd()
y setwd()
respectivamente.
Ejemplo para obtener el directorio de trabajo actual:
getwd()
Ejemplo para establecer un nuevo directorio de trabajo:
setwd("C:/Users/Usuario/Documents/datos") file_path <- "mi_archivo.csv" data <- read.csv(file_path)
Ejemplo para una ruta relativa desde el directorio de trabajo:
file_path <- "datos/mi_archivo.csv" data <- read.csv(file_path)
Uso del Paquete here
:
Aunque here
se utiliza comúnmente dentro de un
proyecto de RStudio, puedes usarlo fuera de un proyecto para construir
rutas relativas de manera más robusta.
Primero, instala el paquete si no lo tienes:
install.packages("here")
Luego, utiliza here()
para construir rutas
relativas:
library(here) file_path <- here("datos", "mi_archivo.csv") data <- read.csv(file_path)
Conoce tu Directorio de Trabajo:
getwd()
para asegurarte de que las rutas relativas sean
correctas.Utiliza Rutas Relativas Siempre que Sea Posible:
Mantén una Estructura de Directorios Clara:
Documenta las Rutas:
Un script en R es un archivo de texto que contiene una serie de
comandos y código escrito en el lenguaje de programación R. Estos
comandos se ejecutan secuencialmente para realizar tareas específicas,
como análisis de datos, visualización de datos, manipulación de datos y
más. Los scripts en R tienen generalmente la extensión
.R
.
Archivo de Texto:
Secuencia de Comandos:
Reutilización:
Documentación:
#
) que describen lo que hace cada parte del código,
facilitando la comprensión y el mantenimiento del script.Aquí hay una guía paso a paso para crear y ejecutar un script en RStudio:
Abrir RStudio:
Crear un Nuevo Script:
Ve al menú superior y selecciona File
>
New File
> R Script
. Esto abrirá una nueva
ventana de script en RStudio.
Escribir Código en el Script:
Guardar el Script:
File
>
Save
o presionando Ctrl+S
(Cmd+S en Mac).
Elige un nombre y una ubicación para el archivo, asegurándote de que
tiene la extensión .R
.Ejecutar el Script:
Puedes ejecutar el script completo seleccionando
Code
> Run Region
> Run All
o presionando Ctrl+Shift+Enter
(Cmd+Shift+Enter en
Mac).
También puedes ejecutar partes del script seleccionando las
líneas de código que deseas ejecutar y presionando
Ctrl+Enter
(Cmd+Enter en Mac).
Los comentarios en los scripts de R son importantes para la claridad
y la colaboración. Los comentarios comienzan con el símbolo
#
y se utilizan para explicar el propósito de diferentes
partes del código.
Es una extensión de Markdown que permite la integración de código R directamente en documentos que combinan texto, código y resultados de análisis. R Markdown es una herramienta muy poderosa para crear informes reproducibles y documentos que incluyen análisis estadísticos, gráficos, tablas y más.
Combina Texto y Código:
Reproducibilidad:
Salida en Múltiples Formatos:
Interactividad:
Un documento R Markdown típico tiene tres partes:
YAML Header:
Contiene metadatos sobre el documento, como el título, el autor, la fecha y el formato de salida.
---
title: "Análisis de Datos"
author: "Tu Nombre"
date: "2024-07-30"
output: html_document
---
Chunks de Código:
Se utilizan para insertar y ejecutar código R. Los chunks de
código están delimitados por ```{r}
al principio y
```
al final.
```{r}
# Cargar datos
data <- read.csv("data/mi_archivo.csv")
summary(data)
```
Texto en Markdown:
Abrir RStudio:
Crear un Nuevo Documento R Markdown:
File
>
New File
> R Markdown...
.Configurar el Documento:
Aparecerá una ventana para configurar el nuevo documento.
Introduce el título, el autor y selecciona el formato de salida (HTML,
PDF, Word). Haz clic en OK
.
Escribir el Contenido:
Renderizar el Documento:
Knit
en la barra de herramientas de RStudio. Esto ejecutará
el código en los chunks y generará un documento en el formato
seleccionado (HTML, PDF, Word).Un paquete es una colección de funciones, datos y documentación que extiende las capacidades del lenguaje R.
Los paquetes permiten a los usuarios realizar tareas específicas, como análisis estadísticos, gráficos, manipulación de datos, y mucho más.
Los paquetes son una forma de compartir y reutilizar código y recursos en R.
Funciones:
ggplot2
incluye funciones para crear gráficos
avanzados.Datos:
Documentación:
Vignettes:
Para instalar un paquete en R, utilizas la función
install.packages()
. Esta función descarga e instala el
paquete desde CRAN (Comprehensive R Archive Network) o desde otro
repositorio especificado.
Ejemplo de Instalación:
# Instalar el paquete ggplot2 install.packages("ggplot2")
Puedes instalar varios paquetes a la vez si separas sus nombres con comas:
# Instalar múltiples paquetes install.packages(c("dplyr", "tidyr", "readr"))
Una vez que un paquete está instalado, debes cargarlo en tu sesión de
R para usar sus funciones y datos. Esto se hace con la función
library()
.
Ejemplo de Carga:
# Cargar el paquete ggplot2 library(ggplot2)
Para ver una lista de los paquetes que tienes instalados en tu
sistema, puedes usar la función installed.packages()
:
# Mostrar los paquetes instalados installed.packages()
Para actualizar un paquete a la última versión disponible, usa la
función update.packages()
:
# Actualizar un paquete específico update.packages(“ggplot2”)`
Para eliminar un paquete que ya no necesitas, utiliza la función
remove.packages()
:
# Eliminar el paquete ggplot2 remove.packages("ggplot2")
En este documento se presentan varios comandos útiles en R y se explican sus usos con ejemplos prácticos.
El comando `contributors()` muestra una lista de personas que han contribuido al desarrollo de R.
El comando citation()
proporciona información sobre cómo
citar R y sus paquetes en publicaciones. Para citar un paquete
específico, puedes usar citation("nombre_del_paquete")
.
##
## To cite R in publications use:
##
## R Core Team (2022). R: A language and environment for statistical
## computing. R Foundation for Statistical Computing, Vienna, Austria.
## URL https://www.R-project.org/.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {R: A Language and Environment for Statistical Computing},
## author = {{R Core Team}},
## organization = {R Foundation for Statistical Computing},
## address = {Vienna, Austria},
## year = {2022},
## url = {https://www.R-project.org/},
## }
##
## We have invested a lot of time and effort in creating R, please cite it
## when using it for data analysis. See also 'citation("pkgname")' for
## citing R packages.
##
## To cite package 'dplyr' in publications use:
##
## Wickham H, François R, Henry L, Müller K, Vaughan D (2023). _dplyr: A
## Grammar of Data Manipulation_. R package version 1.1.4,
## <https://CRAN.R-project.org/package=dplyr>.
##
## A BibTeX entry for LaTeX users is
##
## @Manual{,
## title = {dplyr: A Grammar of Data Manipulation},
## author = {Hadley Wickham and Romain François and Lionel Henry and Kirill Müller and Davis Vaughan},
## year = {2023},
## note = {R package version 1.1.4},
## url = {https://CRAN.R-project.org/package=dplyr},
## }
El comando sessionInfo() muestra información sobre la sesión actual de R, incluyendo versiones de paquetes, sistema operativo, y más.
## R version 4.2.2 (2022-10-31 ucrt)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 10 x64 (build 19045)
##
## Matrix products: default
##
## locale:
## [1] LC_COLLATE=Spanish_Colombia.utf8 LC_CTYPE=Spanish_Colombia.utf8
## [3] LC_MONETARY=Spanish_Colombia.utf8 LC_NUMERIC=C
## [5] LC_TIME=Spanish_Colombia.utf8
##
## attached base packages:
## [1] stats graphics grDevices utils datasets methods base
##
## loaded via a namespace (and not attached):
## [1] digest_0.6.31 R6_2.5.1 lifecycle_1.0.4 jsonlite_1.8.8
## [5] evaluate_0.23 cachem_1.0.8 rlang_1.1.3 cli_3.6.2
## [9] rstudioapi_0.16.0 jquerylib_0.1.4 bslib_0.7.0 rmarkdown_2.26
## [13] tools_4.2.2 xfun_0.43 yaml_2.3.8 fastmap_1.1.1
## [17] compiler_4.2.2 htmltools_0.5.8.1 knitr_1.46 sass_0.4.9
Los comandos Sys.Date() y Sys.time() se utilizan para obtener la fecha y hora actual del sistema, respectivamente.
## [1] "2024-08-12"
## [1] "2024-08-12 23:33:06 -05"
help()
y
?
proporcionan ayuda sobre paquetes,
funciones y objetos que estén instalados
## starting httpd help server ... done
Si el paquete o función no esta instalado se debe usar
??
ls
lista todos los objetos del entorno
de trabajo
## character(0)
rm
elimina uno o más los objetos del entorno de
trabajo
rm(base)
El comando as.numeric() puede usarse para convertir valores a tipo numérico. Aquí, lo usamos para convertir el valor de Sys.time() a un número. También se puede usar class() para verificar la clase de una variable.
## [1] 1723523588
## [1] "POSIXct" "POSIXt"
El comando data() lista las bases de datos de ejemplo disponibles en R.
Para cargar una base de datos de ejemplo, se puede usar el comando data(nombre_de_la_base_de_datos).
## Qtr1 Qtr2 Qtr3 Qtr4
## 1945 NA 87 82 75
## 1946 63 50 43 32
## 1947 35 60 54 55
## 1948 36 39 NA NA
## 1949 69 57 57 51
## 1950 45 37 46 39
## 1951 36 24 32 23
## 1952 25 32 NA 32
## 1953 59 74 75 60
## 1954 71 61 71 57
## 1955 71 68 79 73
## 1956 76 71 67 75
## 1957 79 62 63 57
## 1958 60 49 48 52
## 1959 57 62 61 66
## 1960 71 62 61 57
## 1961 72 83 71 78
## 1962 79 71 62 74
## 1963 76 64 62 57
## 1964 80 73 69 69
## 1965 71 64 69 62
## 1966 63 46 56 44
## 1967 44 52 38 46
## 1968 36 49 35 44
## 1969 59 65 65 56
## 1970 66 53 61 52
## 1971 51 48 54 49
## 1972 49 61 NA NA
## 1973 68 44 40 27
## 1974 28 25 24 24
Para cargar bases de datos, puedes usar diferentes comandos dependiendo del formato del archivo. A continuación, se presentan algunos ejemplos de cómo cargar datos desde archivos CSV y archivos de texto, así como desde archivos Excel.
Si tienes un archivo CSV, puedes usar la función `read.csv()` para cargar los datos. Aquí hay un ejemplo de cómo hacerlo:
# Cargar un archivo CSV con valores separados por tabulación df <- read.csv(“bd.txt”, header = TRUE, sep = “, dec =”.”)` |
header = TRUE
: Indica que la
primera fila del archivo contiene los nombres de las columnas.
sep = ";"
: Especifica el
delimitador de los valores en el archivo. En este caso, el delimitador
es el punto y coma.
sep = "\t"
: Especifica que el
delimitador de los valores en el archivo es una tabulación (tab).
dec = "."
: Define el carácter utilizado
para los decimales. Aquí, el punto es el separador decimal.
Para cargar datos desde un archivo Excel, puedes usar el paquete
readxl
y su función read_xlsx()
. Primero,
asegúrate de tener el paquete instalado y cargado:
# Cargar el paquete readxl library(readxl)
# Cargar datos desde un archivo Excel df <- readxl::read_xlsx(“U:\Mi unidad\Analytics\df.xlsx”)`
readxl::read_xlsx()
: Esta función
lee archivos Excel con extensión .xlsx
.
Ruta del archivo: Especifica la ruta completa al archivo Excel. Asegúrate de que la ruta sea correcta y que tengas permisos de lectura para el archivo.
En la pantalla Files
busque la base de datos, clic sobre
ella e Import dataset
Adicionalmente, desde el menú
File > Import Dataset >
puede seleccionar diferentes
métodos para cargar datos dependiendo de su formato
Para leer datos directamente desde el portapapeles del sistema operativo y cargarlos en un dataframe en R, se usa el siguiente código:
Se tiene esta base de datos en Excel
Se seleccionan las celdas y se copian
ctrl + c
Se corre el siguiente codigo en R
datos <- read.table(file = "clipboard", header = TRUE, sep = "\t")
read.table()
: es una función en R
que se utiliza para leer datos en forma de tabla desde un archivo o una
conexión. Por defecto, esta función lee archivos de texto donde los
valores están separados por espacios o tabulaciones.
file = "clipboard"
: especifica la
fuente de los datos que se van a leer. En este caso,
"clipboard"
indica que los datos deben ser leídos desde el
portapapeles del sistema operativo.
Usar "clipboard"
es útil cuando has copiado datos
tabulares desde otra aplicación (como Excel o un editor de texto) y
quieres pegarlos directamente en R sin tener que guardarlos en un
archivo primero.
header = TRUE
: indica si el archivo
de datos tiene una fila de encabezado (nombres de columnas) en la
primera fila. Cuando se establece en TRUE
,
read.table()
trata la primera fila del archivo como los
nombres de las columnas del dataframe resultante.
sep = "\t"
: especifica el
delimitador que se utiliza para separar los valores en los datos. En
este caso, "\t"
indica que el delimitador es una tabulación
(tab), que es común en archivos tabulados.
Esto significa que read.table()
espera que los datos en
el portapapeles estén separados por tabulaciones.
## Warning in read.table(file = "clipboard", header = TRUE, sep = "\t"):
## incomplete final line found by readTableHeader on 'clipboard'
## [1] X..objeto.X.no.encontrado
## <0 rows> (or 0-length row.names)
Para esta sección se usara la base de datos de la prueba de realizada
llamada df
## Warning: package 'readxl' was built under R version 4.2.3
Para obtener la dimensión de un dataframe, es decir, el número de filas y columnas, utiliza la función `dim()`:
## [1] 200 4
dim(df)
: Devuelve un vector con el
número de filas y el número de columnas del dataframe
df
.
Para el caso de la base de datos analizada, se tienen 200 filas y 4 columnas
Para obtener el número de columnas y filas, puedes usar los siguientes comandos:
length(df)
: Devuelve el número de
columnas en el dataframe df
.
nrow(df)
: Devuelve el número de
filas en el dataframe df
.
## [1] 4
## [1] 200
El primer resultado indica que la base de datos df cuenta con 4 columnas, el segundo indica el número de filas (200 registros)
Para contar los elementos en una variable específica dentro del
dataframe se debe agregar el nombre de la variable después de el nombre
de la base de datos y el signo $
## [1] 200
## [1] 200
Las variables analizadas cuentan con 200 registros cada una
Para obtener los nombres de las variables (columnas) en el dataframe:
## [1] "candidatos" "ubicacion" "edad" "distancia"
names(df)
: Devuelve un vector con los
nombres de las columnas del dataframe df
.
Para el ejemplo, sabemos que la base contaba con 4 columnas o variables, y sus nombres son: candidatos, ubicación, edad y distancia.
Para ver los primeros y últimos registros del dataframe:
head(df)
: Muestra las primeras 6
filas del dataframe.
head(df, 10)
: Muestra las primeras
10 filas.
tail(df)
: Muestra las últimas 6
filas.
tail(df, 4)
: Muestra las últimas 4
filas.
## # A tibble: 6 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Putin Hogwarts 51 25.1
## 2 Putin Macondo 104 8.62
## 3 Putin Wakanda 70 4.15
## 4 Uribe Ostania 58 15.0
## 5 Uribe Ciudad gotica 20 14.0
## 6 Putin Ostania 29 6.78
## # A tibble: 10 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Putin Hogwarts 51 25.1
## 2 Putin Macondo 104 8.62
## 3 Putin Wakanda 70 4.15
## 4 Uribe Ostania 58 15.0
## 5 Uribe Ciudad gotica 20 14.0
## 6 Putin Ostania 29 6.78
## 7 Putin Ciudad gotica 39 NA
## 8 Uribe Ostania 36 9.94
## 9 Putin Ciudad gotica 62 7.96
## 10 Milei Wakanda 26 13.6
## # A tibble: 6 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Uribe Hogwarts 26 9.30
## 2 Putin Hogwarts 40 9.56
## 3 Uribe Macondo 66 9.11
## 4 Putin Mordor 20 NA
## 5 Uribe Hogwarts 64 7.60
## 6 Milei Macondo 58 8.42
## # A tibble: 4 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Uribe Macondo 66 9.11
## 2 Putin Mordor 20 NA
## 3 Uribe Hogwarts 64 7.60
## 4 Milei Macondo 58 8.42
Para obtener una muestra aleatoria de registros del dataframe,
utiliza la función some()
del paquete car
:
## Warning: package 'car' was built under R version 4.2.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.2.3
## # A tibble: 10 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Uribe Ciudad gotica 49 10.5
## 2 Putin Wakanda 14 16.0
## 3 Putin Ostania 72 7.59
## 4 Putin Ciudad gotica 7 11.0
## 5 Putin Ciudad gotica 37 NA
## 6 Putin Ciudad gotica 84 18.8
## 7 Putin Wakanda 25 11.7
## 8 Putin Ciudad gotica 24 9.57
## 9 Uribe Ostania 75 6.83
## 10 Uribe Ostania 44 8.80
## # A tibble: 10 × 4
## candidatos ubicacion edad distancia
## <chr> <chr> <dbl> <dbl>
## 1 Putin Wakanda 70 4.15
## 2 Putin Ostania 29 6.78
## 3 Milei Macondo 96 12.6
## 4 Putin Ciudad gotica 16 7.75
## 5 Milei Wakanda 24 9.16
## 6 Uribe Macondo 81 5.41
## 7 Uribe Wakanda 47 14.9
## 8 Putin Macondo 62 4.68
## 9 Putin Hogwarts 40 9.56
## 10 Milei Macondo 58 8.42
Para obtener una visión general de la estructura de los datos y el porcentaje de datos perdidos:
Abstract(df)
: Proporciona un
resumen con el porcentaje de datos perdidos y otras estadísticas
descriptivas.
str(df)
: Muestra la estructura
interna del dataframe df
, incluyendo el tipo de cada
columna y una muestra de los datos.
## tibble [200 × 4] (S3: tbl_df/tbl/data.frame)
## $ candidatos: chr [1:200] "Putin" "Putin" "Putin" "Uribe" ...
## $ ubicacion : chr [1:200] "Hogwarts" "Macondo" "Wakanda" "Ostania" ...
## $ edad : num [1:200] 51 104 70 58 20 29 39 36 62 26 ...
## $ distancia : num [1:200] 25.14 8.62 4.15 14.96 13.96 ...
La base de datos df contiene 200 columnas x 4 variables
Las variables son: candidatos, ubicación, edad y distancia.
Para el caso de candidatos, es una variable del tipo carácter y sus primeros registros toman los valores “Putin”,“Putin”,“Putin”,“Uribe”
Para el caso de la variable distancia, es una variable de tipo númerica, y cuenta con decimales.
## Warning: package 'DescTools' was built under R version 4.2.3
##
## Attaching package: 'DescTools'
## The following object is masked from 'package:car':
##
## Recode
## ------------------------------------------------------------------------------
## df
##
## data frame: 200 obs. of 4 variables
## 193 complete cases (96.5%)
##
## Nr ColName Class NAs Levels
## 1 candidatos character .
## 2 ubicacion character .
## 3 edad numeric .
## 4 distancia numeric 7 (3.5%)
Las variables son: candidatos, ubicación, edad y distancia.
Para el caso de la variable distancia, es una variable de tipo númerica, y cuenta con decimales, se cuentan con 7 registros en NA (es decir, sin información) lo que corresponde al 3.5% de los 200 registros de la base de datos.
Para verificar la clase de un dataframe y sus variables:
class(df)
: Devuelve la clase del
objeto df
(debería ser "data.frame"
).
class(df$candidatos)
,
class(df$ubicacion)
, etc.: Devuelven la clase de
las columnas específicas.
## [1] "tbl_df" "tbl" "data.frame"
## [1] "character"
## [1] "character"
## [1] "numeric"
## [1] "numeric"
Para obtener los valores únicos en una variable discreta, es decir, los valores o categorías que toma:
unique(df$ubicacion)
: Devuelve los
valores únicos en la columna ubicacion
.
## [1] "Hogwarts" "Macondo" "Wakanda" "Ostania"
## [5] "Ciudad gotica" "Mordor"
## [1] "Putin" "Uribe" "Milei"
## [1] 51 104 70 58 20 29 39 36 62 26 107 89 83 12 49 41 66 57 56
## [20] 96 82 27 2 4 34 60 3 75 91 74 47 10 24 37 55 16 53 1
## [39] 32 69 46 42 22 23 15 63 76 61 73 50 80 44 14 8 45 30 33
## [58] 59 38 6 72 71 7 97 102 67 5 40 93 64 9 81 84 21 43 28
## [77] 90 78 25 88 100 127 65 117
Para obtener un resumen de estadísticas descriptivas y frecuencias:
summary(df)
: Proporciona un resumen
estadístico básico de cada columna del dataframe.
Desc(df)
: Ofrece un resumen
detallado y gráficos para cada variable en el dataframe.
dfSummary(df)
: Resumen detallado
con estadísticas y gráficos usando el paquete
summarytools
.
## candidatos ubicacion edad distancia
## Length:200 Length:200 Min. : 1.00 Min. : 3.167
## Class :character Class :character 1st Qu.: 24.00 1st Qu.: 7.887
## Mode :character Mode :character Median : 42.50 Median : 9.567
## Mean : 45.37 Mean : 9.949
## 3rd Qu.: 63.00 3rd Qu.:11.603
## Max. :127.00 Max. :25.138
## NA's :7
Describe las variables númericas de la base de datos, por ejemplo, la edad mínima de los encuestados es 1 año mientras que la máxima es de 127 años, con una mediana de 42.5 años y una media de 45.37 años.
Para el caso de las variables candidatos y ubicación, como estas son caracteres solo muestra que tienen 200 registros.
¿Qué pasa si se convierten las variables caracter a factor?
#Convertir una variable a factor
df$ubicacion <- as.factor(df$ubicacion)
df$candidatos <- as.factor(df$candidatos)
# Resumen de estadísticas descriptivas
summary(df)
## candidatos ubicacion edad distancia
## Milei:50 Ciudad gotica:37 Min. : 1.00 Min. : 3.167
## Putin:80 Hogwarts :31 1st Qu.: 24.00 1st Qu.: 7.887
## Uribe:70 Macondo :39 Median : 42.50 Median : 9.567
## Mordor :26 Mean : 45.37 Mean : 9.949
## Ostania :39 3rd Qu.: 63.00 3rd Qu.:11.603
## Wakanda :28 Max. :127.00 Max. :25.138
## NA's :7
Al convertir a factor, es posible analizar las variables
candidatos y ubicación. Ahora el comando summary muestra las frecuencias
de cada una de las alternativas que toma cada variable.
## ------------------------------------------------------------------------------
## Describe df (tbl_df, tbl, data.frame):
##
## data frame: 200 obs. of 4 variables
## 193 complete cases (96.5%)
##
## Nr ColName Class NAs Levels
## 1 candidatos factor . (3): 1-Milei, 2-Putin, 3-Uribe
## 2 ubicacion factor . (6): 1-Ciudad gotica, 2-Hogwarts,
## 3-Macondo, 4-Mordor, 5-Ostania, ...
## 3 edad numeric .
## 4 distancia numeric 7 (3.5%)
##
##
## ------------------------------------------------------------------------------
## 1 - candidatos (factor)
##
## length n NAs unique levels dupes
## 200 200 0 3 3 y
## 100.0% 0.0%
##
## level freq perc cumfreq cumperc
## 1 Putin 80 40.0% 80 40.0%
## 2 Uribe 70 35.0% 150 75.0%
## 3 Milei 50 25.0% 200 100.0%
## ------------------------------------------------------------------------------
## 2 - ubicacion (factor)
##
## length n NAs unique levels dupes
## 200 200 0 6 6 y
## 100.0% 0.0%
##
## level freq perc cumfreq cumperc
## 1 Macondo 39 19.5% 39 19.5%
## 2 Ostania 39 19.5% 78 39.0%
## 3 Ciudad gotica 37 18.5% 115 57.5%
## 4 Hogwarts 31 15.5% 146 73.0%
## 5 Wakanda 28 14.0% 174 87.0%
## 6 Mordor 26 13.0% 200 100.0%
## ------------------------------------------------------------------------------
## 3 - edad (numeric)
##
## length n NAs unique 0s mean meanCI'
## 200 200 0 84 0 45.37 41.64
## 100.0% 0.0% 0.0% 49.10
##
## .05 .10 .25 median .75 .90 .95
## 5.00 11.80 24.00 42.50 63.00 83.00 93.15
##
## range sd vcoef mad IQR skew kurt
## 126.00 26.78 0.59 28.91 39.00 0.43 -0.35
##
## lowest : 1.0 (3), 2.0 (2), 3.0 (2), 4.0 (2), 5.0 (2)
## highest: 102.0 (2), 104.0, 107.0, 117.0, 127.0
##
## ' 95%-CI (classic)
## ------------------------------------------------------------------------------
## 4 - distancia (numeric)
##
## length n NAs unique 0s mean meanCI'
## 200 193 7 = n 0 9.949046 9.494072
## 96.5% 3.5% 0.0% 10.404021
##
## .05 .10 .25 median .75 .90 .95
## 5.428575 6.481631 7.887011 9.566809 11.602988 14.310540 15.666749
##
## range sd vcoef mad IQR skew kurt
## 21.970785 3.204581 0.322099 2.687759 3.715977 1.000008 2.337304
##
## lowest : 3.166745, 3.97088, 3.987963, 4.146889, 4.422825
## highest: 16.822945, 18.169112, 18.775825, 20.68755, 25.13753
##
## ' 95%-CI (classic)
Desc(df)
: Ofrece un resumen detallado y
gráficos para cada variable en el dataframe.
## Warning: package 'summarytools' was built under R version 4.2.3
## Data Frame Summary
## df
## Dimensions: 200 x 4
## Duplicates: 0
##
## --------------------------------------------------------------------------------------------
## Variable Stats / Values Freqs (% of Valid) Graph Missing
## ------------ ------------------------- --------------------- --------------------- ---------
## candidatos 1. Milei 50 (25.0%) IIIII 0
## [factor] 2. Putin 80 (40.0%) IIIIIIII (0.0%)
## 3. Uribe 70 (35.0%) IIIIIII
##
## ubicacion 1. Ciudad gotica 37 (18.5%) III 0
## [factor] 2. Hogwarts 31 (15.5%) III (0.0%)
## 3. Macondo 39 (19.5%) III
## 4. Mordor 26 (13.0%) II
## 5. Ostania 39 (19.5%) III
## 6. Wakanda 28 (14.0%) II
##
## edad Mean (sd) : 45.4 (26.8) 84 distinct values . : 0
## [numeric] min < med < max: : : : : (0.0%)
## 1 < 42.5 < 127 : : : : : .
## IQR (CV) : 39 (0.6) : : : : : : :
## : : : : : : : : . .
##
## distancia Mean (sd) : 9.9 (3.2) 193 distinct values : 7
## [numeric] min < med < max: : : (3.5%)
## 3.2 < 9.6 < 25.1 . : :
## IQR (CV) : 3.7 (0.3) : : : . .
## . : : : : :
## --------------------------------------------------------------------------------------------
dfSummary(df)
: Resumen detallado con
estadísticas y gráficos usando el paquete summarytools
.
Para generar y visualizar el resumen anterior de summarytools en formato HTML:
htmltools::html_print(html_summary)
:
Imprime el resumen en formato HTML
# Generar resumen en HTML
resumen <- dfSummary(df,
varnumbers = FALSE,
valid.col = FALSE,
graph.magnif = 0.76)
html_summary <- print(resumen, method = "render")
htmltools::html_print(html_summary)
gt_plt_summary(df, title = "Resumen de la base de datos")
:
Crea una tabla resumen con un título utilizando el paquete
gtExtras
.
## Loading required package: gt
## Warning: package 'gt' was built under R version 4.2.3
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 200 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 200 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[1], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 193 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## Warning in geom_point(data = NULL, aes(x = rng_vals[2], y = 1), color = "transparent", : All aesthetics have length 1, but the data has 193 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
Resumen de la base de datos | ||||||
200 rows x 4 cols | ||||||
Column | Plot Overview | Missing | Mean | Median | SD | |
---|---|---|---|---|---|---|
candidatosPutin, Uribe and Milei |
0.0% | — | — | — | ||
ubicacionMacondo, Ostania, Ciudad gotica, Hogwarts, Wakanda and Mordor |
0.0% | — | — | — | ||
edad | 0.0% | 45.4 | 42.5 | 26.8 | ||
distancia | 3.5% | 9.9 | 9.6 | 3.2 |
x <- 5
: Crea una variable x
y le asigna
el valor 5
.
rm(x)
: Elimina la variable x
del entorno de
trabajo.
x = 5
: Asigna el valor 5
a x
.
Es una forma alternativa de asignación, aunque en R es preferible usar
<-
## [1] FALSE
Este código no tiene un significado lógico claro debido al espacio
entre <
y -5
. En R, x < -5
compararía si x
es menor que -5
. El espacio
genera confusión, por lo que no se debería usar así.
weight <- c(10,20,30,40)
assign ("weight1", c(10,20,30,40)) #Otra forma de crear un vector
weight = c(10,20,30,40)
weight <- c(10,20,30,40)
: Crea un vector llamado
weight
.
assign("weight1", c(10,20,30,40))
: Otra forma de
crear un vector, usando la función assign
.
weight = c(10,20,30,40)
: Otra forma de asignar
valores a un vector, similar al uso de <-
.
## [1] 2
n <- 1
: Asigna 1
a
n
.
n <- n + 1
: Incrementa n
en
1
, por lo que n
ahora es
2
.
n
: Muestra el valor actual de n
, que es
2
.
## [1] 5
## [1] 6
## [1] 5.78
## [1] 5.77
## [1] 5.77215
floor(5.7)
: Aproxima 5.7 hacia abajo (devuelve
5
).
ceiling(5.7)
: Aproxima 5.7 hacia arriba (devuelve
6
).
round(5.777, digits = 2)
: Redondea a 2 decimales
(devuelve 5.78
).
round(5.772154513610, digits = 5)
: Redondea a 5
decimales (devuelve 5.77215
).
# Cómo crear secuencias de números
seq(from = 1, to = 9, by = 2) ###Secuencia desde 1 hasta 9 cada 2###
## [1] 1 3 5 7 9
#¿Cómo lo asignaría al vector llamado "Ho"?
Ho = seq(from = 1, to = 9, by = 2)
Ho <- seq(from = 1, to = 9, by = 2)
seq(from = 1, to = 9, by = 2)
: Genera una secuencia
desde 1
hasta 9
, en incrementos de
2
.
Ho <- seq(from = 1, to = 9, by = 2)
: Asigna la
secuencia generada al vector Ho
.
## [1] 10 11 12 13 14 15 16 17 18
## [1] 18 17 16 15 14 13 12 11 10
## [1] -0.5 0.5 1.5 2.5 3.5 4.5 5.5 6.5 7.5 8.5
## [1] 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4
## [1] 1.5 1.3 1.1 0.9 0.7 0.5 0.3 0.1
10:18
: Genera una secuencia del 10
al
18
.
18:10
: Genera una secuencia inversa del
18
al 10
.
-0.5:8.5
: Genera una secuencia de -0.5
a 8.5
.
seq(0, 1.5, 0.2)
: Genera una secuencia de
0
a 1.5
en incrementos de
0.2
.
seq(1.5, 0, -0.2)
: Genera una secuencia de
1.5
a 0
en decrementos de
0.2
.
sequence
## [1] 1 2 3 4 5
## [1] 1 2 3 4 5 1 2 3 4 1 2 3 1 2 1
## [1] 1 2 3 4 5 1 2 1 2 3 4
sequence(5)
: Genera una secuencia de 1
a 5
.
sequence(5:1)
: Genera secuencias desde
1
hasta 5
, luego 1
hasta
4
, y así sucesivamente.
sequence(c(5,2,4))
: Genera secuencias de
1
a 5
, de 1
a 2
, y
de 1
a 4
.
## [1] 9 9 9 9 9
## [1] 1 2 3 4 1 2 3 4
## [1] 1 1 2 2 3 3 4 4
## [1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
## [1] 1 2 2 3 3 3 4 4 4 4
## [1] 1 1 1 1 2 3 3 3 3 3 4 4
rep(9,5)
: Repite el 9
cinco
veces.
rep(1:4, 2)
: Repite la secuencia
1,2,3,4
dos veces.
rep(1:4, each = 2)
: Repite cada número dos
veces.
rep(1:4, 1:4)
: Repite el 1
una vez, el
2
dos veces, y así sucesivamente.
a <- c(1, 2, 5, 3, 6, -2, 4)
b <- c("one", "two", "three")
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)
typeof(a); typeof(b); typeof(c) ###Tipo de los elementos que componen cada vector###
## [1] "double"
## [1] "character"
## [1] "logical"
## [1] 10 11 12 13 14 15 16
## [1] 12
## [1] 11 13 16
## [1] 11 12 13 14
## [1] 10 11 13 14 15 16
## [1] NA
## [1] 0
typeof(a)
, typeof(b)
,
typeof(c)
: Muestra el tipo de los elementos en los vectores
a
, b
, y c
.
q[3]
: Accede al tercer elemento del vector
q
.
y[-3]
: Elimina el tercer elemento del vector
y
.
## [,1] [,2] [,3] [,4]
## [1,] 1 6 11 16
## [2,] 2 7 12 17
## [3,] 3 8 13 18
## [4,] 4 9 14 19
## [5,] 5 10 15 20
y <- matrix(1:20, nrow = 5, byrow = TRUE); y ###Matriz elementos 1 a 20 con 5 filas,se llena por filas###
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
## [4,] 13 14 15 16
## [5,] 17 18 19 20
cells <- c(1, 26, 24, 68)
rnames <- c("R1", "R2"); cnames <- c("C1", "C2") ###Vector nombres filas, vector nombres columnas###
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = TRUE, ###Crea una matriz con los elementos del vector cells por filas, con 2 filas, 2 columnas, y asigna nombres###
dimnames = list(rnames, cnames))
mymatrix
## C1 C2
## R1 1 26
## R2 24 68
mymatrix <- matrix(cells, nrow = 2, ncol = 2, byrow = FALSE, ###Crea una matriz con los elementos del vector cells por columnas, con 2 filas, 2 columnas, y asigna nombres###
dimnames = list(rnames, cnames))
mymatrix
## C1 C2
## R1 1 24
## R2 26 68
y <- matrix(1:20, nrow = 5)
: Crea una matriz con
elementos de 1
a 20
en 5
filas,
llenando por columnas.
mymatrix
: Crea una matriz de 2x2
usando
el vector cells
y asigna nombres a las filas y
columnas.
y <- scan() ###Read data into a vector or list from the console or file. Pide introducir los datos###
scan()
: Permite leer datos desde la consola o un
archivo directamente a un vector o lista.## [1] 1 3 5 7 9 11 13 15 17 19
## [1] 3 3 3 3
## [1] 3 3 3 3 1 3 5 7 9 11 13 15 17 19
## [1] 100 101 102 103 104 105 106 107 108 109 110
## [1] 100 102 101
## [1] 103 104 105 106 107 108 109 110
seq(1, 20, by = 2)
: Genera una secuencia desde
1
hasta 20
, en incrementos de
2
.
rep(3, 4)
: Repite el número 3
cuatro
veces.
x[i]
: Accede a las posiciones indicadas por
i
en el vector x
.
x[j]
: Elimina las posiciones indicadas por
j
en el vector x
.