Antes de iniciar, asegúrese de tener instalado R
y
Rstudio
.
R es un software de acceso libre usado para el análisis estadístico y creación de gráficos. Funciona en una amplia variedad de plataformas UNIX, Windows y MacOS.
RStudio es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R. Esta IDE brinda una interfaz más amigable con el usuario facilitando el aprendizaje.
Puede ir a este enlace y seguir las instrucciones de instalación para el sistema operativo de su equipo.
R
y RStudio
R es un software de acceso libre usado para el análisis estadístico y creación de gráficos. Funciona en una amplia variedad de plataformas UNIX, Windows y MacOS.
RStudio es un entorno de desarrollo integrado (IDE) para el lenguaje de programación R. Esta IDE brinda una interfaz más amigable con el usuario facilitando el aprendizaje.
La consola permite ejecutar una línea de código y visualizar el resultado de ejecutar un código. Sin embargo, cuando se antepone un # a una línea de código, R pinta la línea de código sobre la consola pero no la ejecuta.
Después de ejecutar una línea de código en R, la consola puede retornar un decoding messages. Estos pueden ser:
Warning o message: sugiere que hay detalles de la función que debemos tener en cuenta (no se detiene la ejecución de la función).
Error: se genera cuando ocurrió un error importante causando que la función no continue ejecutándose.
El entorno de trabajo de R almacena temporalmente los objetos que se
asignan durante una sesión. Al momento de cerrar la sesión Rstudio nos
preguntará si queremos almacenar en un archivo .Rdata
los
objetos que se encuentran en la memoria activa de R.
El espacio de trabajo es la colección de objetos almacenados en la memoria activa de R. Para gestionar el espacio de trabajo puede:
## character(0)
## 7208 bytes
## character(0)
Puede remover uno o varios objetos del espacio de trabajo:
Las librerías son un conjunto/paquete de funciones especializadas en tareas específicas.
Una librería se debe instalar en el equipo solo una vez
-install.packages()
-, pero se debe llamar/requerir
-library()
o require()
- cada vez que se inicia
una sesión de Rstudio
en la que se va a utilizar alguna
función de esa librería.
Algunas librerías se actualizan constantemente, usted puede
actualizar la versión de una librería usando la función
update.packages()
.
Nota: puede inspeccionar las librerías que tiene
activas en su sesión corriendo la función sessionInfo()
sobre la consola de R:
R version 4.1.1 (2021-08-10)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Big Sur 10.16
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.1/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Cuando inicia sesión, R carga 7 librerías bases
(usted
,stats
,graphics
,grDevices
,utils
,
datasets, methods
y base
). Pero usted puede
instalar/llamar aproximadamente 18639
librerías disponibles
en el CRAN de R.
¿Como instalar/actualizar una librería?
Una función permite crear, editar, transformar o eliminar objetos. Están contenidas en librerías. Y cada función contiene por lo menos 1 argumento.
Para obtener más información sobre una función u objeto (con nombre)
en R, consulte la documentación de “help” o usando ?
:
Hint: Los comentarios en R están delimitados por
#
. Presiona Ctrl+Shift+c
en RStudio para
(des)comentar secciones completas del código resaltado.
Hint: ¿Ves la sección Ejemplos en la parte
inferior del archivo de ayuda? Puedes ejecutarlos con la función
example()
.
Para muchos paquetes, también puede probar la función
vignette()
, que proporcionará una introducción a un paquete
y su propósito a través de una serie de ejemplos útiles. Una
complicación es que necesita saber el nombre exacto de la(s) viñeta(s)
del paquete. Intente ejecutar:
Para replicar este ejercicio, primero debe descargar el siguiente proyecto
de R y abrir el archivo clase-01.Rproj
. Ahora puede
seguir el script de la clase que está ubicado en:
source/clase-01.R
Puede imprimir en la consola tanto las primeras head()
como las últimas observaciones de la base de datos tail()
.
Puede obtener una descripción completa de la base de datos utilizando la
función skim()
de la biblioteca skimr
. Sin
embargo, puede producir resúmenes de resultados de una variable usando
la función summary()
. Déjame mostrarte un ejemplo:
## # A tibble: 6 × 27
## V1 id ad_type start_date end_date created_on lat lon l1 l2
## <int> <chr> <chr> <IDate> <IDate> <IDate> <dbl> <dbl> <chr> <chr>
## 1 1 hAv2f6… Propie… 2019-09-04 2020-03-26 2019-09-04 4.58 -74.2 Colo… Cund…
## 2 2 xj4oZf… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## 3 3 6vaUZG… Propie… 2019-09-04 2020-01-31 2019-09-04 6.25 -75.6 Colo… Anti…
## 4 4 ia6a/X… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## 5 5 Fn7zE7… Propie… 2019-09-04 9999-12-31 2019-09-04 4.61 -74.1 Colo… Cund…
## 6 6 vfkDDN… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## # … with 17 more variables: l3 <chr>, l4 <chr>, l5 <chr>, l6 <chr>,
## # rooms <int>, bedrooms <int>, bathrooms <int>, surface_total <int>,
## # surface_covered <int>, price <dbl>, currency <chr>, price_period <chr>,
## # title <chr>, description <chr>, property_type <chr>, operation_type <chr>,
## # n <int>
## # A tibble: 6 × 27
## V1 id ad_type start_date end_date created_on lat lon l1 l2
## <int> <chr> <chr> <IDate> <IDate> <IDate> <dbl> <dbl> <chr> <chr>
## 1 239338 r/fu/… Propie… 2019-06-19 2019-07-28 2019-06-19 4.70 -74.0 Colo… Cund…
## 2 239339 ZLVRc… Propie… 2019-06-19 2019-10-05 2019-06-19 4.68 -74.1 Colo… Cund…
## 3 239340 FbNuX… Propie… 2019-06-19 2019-11-06 2019-06-19 11.0 -74.8 Colo… Atlá…
## 4 239341 2HU8D… Propie… 2019-06-19 2020-02-14 2019-06-19 11.0 -74.8 Colo… Atlá…
## 5 239342 l7v/D… Propie… 2019-06-19 2019-11-06 2019-06-19 10.9 -74.8 Colo… Atlá…
## 6 239343 sjA/+… Propie… 2019-06-19 2019-07-28 2019-06-19 11.0 -74.8 Colo… Atlá…
## # … with 17 more variables: l3 <chr>, l4 <chr>, l5 <chr>, l6 <chr>,
## # rooms <int>, bedrooms <int>, bathrooms <int>, surface_total <int>,
## # surface_covered <int>, price <dbl>, currency <chr>, price_period <chr>,
## # title <chr>, description <chr>, property_type <chr>, operation_type <chr>,
## # n <int>
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000e+00 2.530e+08 4.200e+08 8.416e+08 7.940e+08 8.500e+11
## Warning in log(surface_total): NaNs produced
## Warning in log(surface_total): NaNs produced
## + geometry
ggplot(data = db , mapping = aes(x = log(surface_total) , y = log(price))) +
geom_point(col = "red" , size = 0.5)
## Warning in log(surface_total): NaNs produced
## Warning in log(surface_total): NaNs produced
## Warning: Removed 156170 rows containing missing values (`geom_point()`).
## by group
ggplot(data = db ,
mapping = aes(x = log(surface_total) , y = log(price) , group=as.factor(l3) , color=as.factor(l3))) +
geom_point()
## Warning in log(surface_total): NaNs produced
## Warning in log(surface_total): NaNs produced
## Warning: Removed 156170 rows containing missing values (`geom_point()`).
Puede guardar el gráfico en un objeto:
## box_plot: estrato1 vs totalHoursWorked
box_plot <- ggplot(data=db , mapping = aes(log(price) , y = as.factor(l3))) +
geom_boxplot()
box_plot
## Warning: Removed 132 rows containing non-finite values (`stat_boxplot()`).
## Warning: Removed 132 rows containing non-finite values (`stat_boxplot()`).
h_bathrooms = ggplot() + geom_histogram(data=db , aes(x=bathrooms) , fill="#99FF33" , alpha=0.5)
h_bathrooms
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 31736 rows containing non-finite values (`stat_bin()`).
db = db %>% mutate(esc_bathrooms = scale(bathrooms))
h_bathrooms + geom_histogram(data=db , aes(x=esc_bathrooms) , fill="#FF0066" , alpha=0.5)
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 31736 rows containing non-finite values (`stat_bin()`).
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 31736 rows containing non-finite values (`stat_bin()`).
## 0% 25% 50% 75% 100%
## -36 74 115 214 198000
## [1] 140
iqr <- IQR(x=db$surface_total , na.rm=T)
db_out <- db %>% subset(surface_total <= 2*iqr | is.na(surface_total)==T)
cat("¡Elimina las NA!")
## ¡Elimina las NA!
## 0% 25% 50% 75% 100%
## -36 68 98 148 280
## [1] 14575
db = db %>%
mutate(surface_total_out = ifelse(test = surface_total > 4*iqr,
yes = 1,
no = 0))
table(db$surface_total_out)
##
## 0 1
## 77174 6000
## 0% 25% 50% 75% 100%
## 0 0 0 0 1
db = db %>%
mutate(surface_q = case_when(surface_total_out < q[2] ~ "Q-1",
surface_total_out >= q[2] & surface_total_out < q[3] ~ "Q-2",
surface_total_out >= q[3] & surface_total_out < q[4] ~ "Q-3",
surface_total_out >= q[4] ~ "Q-4"))
table(db$surface_q)
##
## Q-4
## 83174
## # A tibble: 6 × 30
## V1 id ad_type start_date end_date created_on lat lon l1 l2
## <int> <chr> <chr> <IDate> <IDate> <IDate> <dbl> <dbl> <chr> <chr>
## 1 1 hAv2f6… Propie… 2019-09-04 2020-03-26 2019-09-04 4.58 -74.2 Colo… Cund…
## 2 2 xj4oZf… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## 3 3 6vaUZG… Propie… 2019-09-04 2020-01-31 2019-09-04 6.25 -75.6 Colo… Anti…
## 4 4 ia6a/X… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## 5 5 Fn7zE7… Propie… 2019-09-04 9999-12-31 2019-09-04 4.61 -74.1 Colo… Cund…
## 6 6 vfkDDN… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá…
## # … with 20 more variables: l3 <chr>, l4 <chr>, l5 <chr>, l6 <chr>,
## # rooms <int>, bedrooms <int>, bathrooms <int>, surface_total <int>,
## # surface_covered <int>, price <dbl>, currency <chr>, price_period <chr>,
## # title <chr>, description <chr>, property_type <chr>, operation_type <chr>,
## # n <int>, esc_bathrooms <dbl[,1]>, surface_total_out <dbl>, surface_q <chr>
## # A tibble: 239,343 × 29
## id ad_type start_date end_date created_on lat lon l1 l2 l3
## <chr> <chr> <IDate> <IDate> <IDate> <dbl> <dbl> <chr> <chr> <chr>
## 1 hAv2f… Propie… 2019-09-04 2020-03-26 2019-09-04 4.58 -74.2 Colo… Cund… Bogo…
## 2 xj4oZ… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá… Barr…
## 3 6vaUZ… Propie… 2019-09-04 2020-01-31 2019-09-04 6.25 -75.6 Colo… Anti… Mede…
## 4 ia6a/… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá… Barr…
## 5 Fn7zE… Propie… 2019-09-04 9999-12-31 2019-09-04 4.61 -74.1 Colo… Cund… Bogo…
## 6 vfkDD… Propie… 2019-09-04 2020-07-17 2019-09-04 11.0 -74.8 Colo… Atlá… Barr…
## 7 jKz6w… Propie… 2019-09-04 9999-12-31 2019-09-04 11.0 -74.8 Colo… Atlá… Barr…
## 8 Fb1fk… Propie… 2019-09-04 2020-02-15 2019-09-04 11.0 -74.8 Colo… Atlá… Barr…
## 9 go9wq… Propie… 2019-09-04 2019-10-08 2019-09-04 6.25 -75.6 Colo… Anti… Mede…
## 10 pR+Qq… Propie… 2019-09-04 2020-05-15 2019-09-04 6.25 -75.6 Colo… Anti… Mede…
## # … with 239,333 more rows, and 19 more variables: l4 <chr>, l5 <chr>,
## # l6 <chr>, rooms <int>, bedrooms <int>, bathrooms <int>,
## # surface_total <int>, surface_covered <int>, price <dbl>, currency <chr>,
## # price_period <chr>, title <chr>, description <chr>, property_type <chr>,
## # operation_type <chr>, n <int>, esc_bathrooms <dbl[,1]>,
## # surface_total_out <dbl>, surface_q <chr>
## # A tibble: 239,343 × 1
## l1
## <chr>
## 1 Colombia
## 2 Colombia
## 3 Colombia
## 4 Colombia
## 5 Colombia
## 6 Colombia
## 7 Colombia
## 8 Colombia
## 9 Colombia
## 10 Colombia
## # … with 239,333 more rows
## # A tibble: 239,343 × 5
## id surface_total surface_covered surface_tota…¹ surfa…²
## <chr> <int> <int> <dbl> <chr>
## 1 hAv2f68Zh76gc8Y76dDK5A== NA 350 NA <NA>
## 2 xj4oZfMeI/bzfOLsZNloeQ== 826 626 1 Q-4
## 3 6vaUZGrqA+nV75QQ+m3akg== 15850 NA 1 Q-4
## 4 ia6a/XwU0DNFRz+dMIKbcQ== 489 NA 0 Q-4
## 5 Fn7zE7rbRzt/2xPFyaiiSw== 727 2800 1 Q-4
## 6 vfkDDN6uhpCeWdLjQmhNbA== 1800 1800 1 Q-4
## 7 jKz6wjiUmwJtnJC0R/sZtw== NA 62 NA <NA>
## 8 Fb1fkjHrw6UoyvRa/zaa/Q== NA 68 NA <NA>
## 9 go9wq1m/BM6mplBvqIVK3g== 103 103 0 Q-4
## 10 pR+QqJXd61KOIJyh+8SW8A== 89 89 0 Q-4
## # … with 239,333 more rows, and abbreviated variable names ¹surface_total_out,
## # ²surface_q
## # A tibble: 239,343 × 15
## id ad_type l1 l2 l3 l4 l5 l6 curre…¹ price…² title
## <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 hAv2f68Zh7… Propie… Colo… Cund… Bogo… "Zon… "Ciu… "" COP "" Casa…
## 2 xj4oZfMeI/… Propie… Colo… Atlá… Barr… "" "" "" COP "" Casa…
## 3 6vaUZGrqA+… Propie… Colo… Anti… Mede… "Can… "" "" COP "" Lote…
## 4 ia6a/XwU0D… Propie… Colo… Atlá… Barr… "" "" "" COP "" Lote…
## 5 Fn7zE7rbRz… Propie… Colo… Cund… Bogo… "Zon… "San… "" COP "" Edif…
## 6 vfkDDN6uhp… Propie… Colo… Atlá… Barr… "" "" "" COP "" Bode…
## 7 jKz6wjiUmw… Propie… Colo… Atlá… Barr… "" "" "" COP "" Apar…
## 8 Fb1fkjHrw6… Propie… Colo… Atlá… Barr… "" "" "" COP "" Apar…
## 9 go9wq1m/BM… Propie… Colo… Anti… Mede… "La … "" "" COP "" Casa…
## 10 pR+QqJXd61… Propie… Colo… Anti… Mede… "La … "" "" COP "" Apar…
## # … with 239,333 more rows, 4 more variables: description <chr>,
## # property_type <chr>, operation_type <chr>, surface_q <chr>, and abbreviated
## # variable names ¹currency, ²price_period
Colin Gillespie and Robin Lovelace, 2017. Efficient R Programming, A Practical Guide to Smarter Programming [Avaiable here]
Cap. 3: Efficient programming
Cap. 4: Efficient programming
Kuhn, M., & Johnson, K. (2013). Applied predictive modeling (Vol. 26, p. 13). New York: Springer. [Avaiable here]