buscar el link en mis repositorios

Link del código

Nota:En el documento puede que se presenten varios errores de ortografía asi como varios caracteres extraños que puedan hacer que se pierda interpretación, por lo cual de ser así me disculpo de antemano, ya que no los corrigo debido a mi escacez de tiempo. Gracias.

Objetivo

El objetivo principal de este documento simplemente es poner en práctica ciertas funciones que aprendí en el curso de R programming dado en Coursera por parte de la universidad John hopkins university.

Getting Data

Las dos primeras semanas del curso consisten en obtener datos basicamente, el primer tipo de archivo que se explica a leer es mas básico y común el tipo csv.

para lo anterior, primero siguiendo las ideas de reprocucibilidad explicadas en el curso, para que si alguna persona corre este código en su computadora no tenga problemas, priemro crearemos directamente una carpeta en caso de no existir, llamada “GettingData”, apra ello se usa la función dir.create y el uso de un condicional.

if(!file.exists("GettingData")){
  dir.create("GettingData")
}

una ves creada la carpeta definiremos nuestro directorio de trabajo a la nueva carpeta para ello uso la funcion paste para concatenar al directorio que se tenga por default la carpeta existente y posteriormente fijar neustro directorio de trabajo como esa carpeta con setwd()

  DirDeTrabajo <- paste(getwd(),"/GettingData",sep="")
  setwd(DirDeTrabajo)

Ahora, ubicamos los datos a leer, para ello primero descargaremos el archivo de internet en este caso son datos de llamadas tramitadas C4 en Bogotá de la pagina de datos abiertos de Bogotá, utilizamos el comando download.file, especificando como quieremos que se llame, despues con la función dir()comrpobamos que se encuentra descargado Puede que tarde un poco en descargarce

UrlDelArchivo <- "https://datosabiertos.bogota.gov.co/dataset/9bdf518e-b756-4865-983f-0521111fbcd1/resource/30d65a8b-d0ed-4e95-977e-0d7cc2ea89ef/download/llamadastramitadas-c4-bogota_numerounicodeseguridadyemergencias-nuse_linea-123-20210630.csv"
download.file(UrlDelArchivo,destfile = "Lectura1.csv")
dir()
## [1] "Getting-and-cleaning-data.Rmd"            
## [2] "Getting-and-cleaning-data_cache"          
## [3] "Getting and cleaning data.Rmd"            
## [4] "GettingData"                              
## [5] "Lectura1.csv"                             
## [6] "proyectoportildes.txt"                    
## [7] "Repaso-de-Getting-and-Cleaning-Data.Rproj"
date()
## [1] "Wed Jul 28 22:57:34 2021"

Tambien por la reproducibilidad, se especifica la fecha por si en futuras descargas el archivo cambia o no se encuentra disponible

Ahora podemos leer los datos con la función básica read.csv, donde se especifica la separación como sep =;; Cabe resltar también que se pudo haber utilizado la función read.table() sin embargo al ser el archivo un .csv prefiero utiliza la otra, sin mebargo read.table se podria utilizar para alguna lectura de un archivo .txt.

Datos1 <- read.csv("Lectura1.csv",sep=";")
head(Datos1)
##                 ID ANIO MES TIPO_INCIDENTE
## 1 20150101UPR1611M 2015   1           611M
## 2  20150101UPR1916 2015   1            916
## 3  20150101UPR1934 2015   1            934
## 4 20150101UPR1942H 2015   1           942H
## 5  20150101UPR1943 2015   1            943
## 6  20150101UPR1944 2015   1            944
##                              TIPO_DETALLE COD_LOCALIDAD LOCALIDAD COD_UPZ
## 1                        MALTRATO A MUJER            01  USAQUÉN    UPR1
## 2          PERSONA O VEHÃ\215CULO SOSPECHOSO            01  USAQUÉN    UPR1
## 3                                   RIÑA            01  USAQUÉN    UPR1
## 4 ACCIDENTE TRÃ\201NSITO CON HERIDOS/MUERTOS            01  USAQUÉN    UPR1
## 5              MOVILIDAD / SEÑALIZACIÓN            01  USAQUÉN    UPR1
## 6                 MANIFESTACIÓN / MOTÃ\215N            01  USAQUÉN    UPR1
##              UPZ CANT_INCIDENTES
## 1 UPR ZONA NORTE               1
## 2 UPR ZONA NORTE               1
## 3 UPR ZONA NORTE               1
## 4 UPR ZONA NORTE               5
## 5 UPR ZONA NORTE               2
## 6 UPR ZONA NORTE              12

Leer Excel

Posteriormente se enseña a leer un archivo de tipo excel, para ello simplemente se debe tener un archivo en excel a leer en el directorio de trabajo, y mediante el paquete xlsxse puede leer mediante la función read.xlsx, sin embargo antes de leerlo es muy importante especificar la hoja del archivo a leer asi como el rango en el que se encuentren los datos que queremos leer, en este caso leo la hoja 2, la segunda tabla que aparece, apra ello el parametro colIndex lo defino como 10 al encontrarce esta tabla en la columna 10 con fila 8 por ello rowIndex corresponde a 8 respectivamente, y especifico que leo los titulos de las columnas con headerTRUE. Resaltar que para evitar problemas al descargar el archivo al ser un .xlsx especificar el parametro mode=wb

UrlDelArchivo <- "https://datosabiertos.bogota.gov.co/dataset/d451b52f-e30c-43b3-9066-3a7816638fea/resource/aef2bb5f-57f0-4eb3-a21d-b4c283b83edc/download/directorio_unico_de_establecimientos_30-jun-2020_vobo_sed.xlsx"
download.file(UrlDelArchivo,destfile = "Lectura2.xlsx",mode='wb')
dir()
##  [1] "Distrital.jpeg"                           
##  [2] "Getting-and-cleaning-data.html"           
##  [3] "Getting-and-cleaning-data.Rmd"            
##  [4] "Getting-and-cleaning-data_cache"          
##  [5] "Getting and cleaning data.Rmd"            
##  [6] "GettingData"                              
##  [7] "Lectura1.csv"                             
##  [8] "Lectura2.xlsx"                            
##  [9] "proyectoportildes.txt"                    
## [10] "Repaso-de-Getting-and-Cleaning-Data.Rproj"
## [11] "twitter.rds"                              
## [12] "twitterRtweet.rds"
date()
## [1] "Wed Jul 28 23:04:09 2021"
#install.packages("xlsx")
library(xlsx)
## Warning: package 'xlsx' was built under R version 4.0.5
Datos2 <- read.xlsx("Lectura2.xlsx",sheetIndex=2,colIndex=10:16,rowIndex=8:28,header = TRUE)
head(Datos2)
##       LOCALIDADES DISTRITAL DISTRITAL.ADMINISTRACION.CONTRATADA
## 1       1-USAQUEN        25                                   1
## 2     2-CHAPINERO         7                                  NA
## 3       3-SANTAFE        15                                   1
## 4 4-SAN CRISTOBAL        62                                   2
## 5          5-USME        67                                   6
## 6    6-TUNJUELITO        25                                  NA
##   OFICIAL.CON.REGIMEN.ESPECIAL PRIVADO PRIVADO.CON.MATRICULA.CONTRATADA
## 1                            3     114                               NA
## 2                           NA      20                               NA
## 3                           NA      18                               NA
## 4                           NA      78                               NA
## 5                           NA      44                               NA
## 6                            1      48                               NA
##   PRIVADO.CON.REGIMEN.ESPECIAL
## 1                           NA
## 2                           NA
## 3                            2
## 4                           NA
## 5                           NA
## 6                            1

Una ves leido se podrían hacer diferentes operaciones y escribir un excel con la función write.xlsx()

Leer XML

Posteriormente se enseño a leer .xml, apra ello se utiliza el paquete XML y especialmente se utiliza la función xmlTreeParse, sin embargo cabe resaltar que para poder aplicar tal léctura de manera correcta, debemos fijarnos en el url donde si es es de tipo http se puede pasar al a función xmlTreeParsedirectamente el url, sin embargo si es de tipo seguro como https es necesario antes utilizar el comando GET del paquete httr.

Además de lo anterior, en mi experiencia no he encontrado muchos archivos de tipo xml disponibles, lo más común es encontrar los códigos fuentes de páginas siendo de tipo html, por ello en tal caso se puede utilizar la función htmlTreeParsedel mismo paquete.

Finalmente se resalta que en el manejo de esta función GET, esta corresponde a un método de los 4 que se peuden hacer en el http protocolo, donde tambien se podria realizar un POST, por ello mismo se puede utilizar esta función especificando diferentes requisitos de lo que se queire obtener de la pagina, por ejemplo se puede especificar el parametro de accept_json()especificando que esperamos que los devuelva el servidor un arhivo de tipo jason, y demás funciones relacionadas al manejo de APIS.

#install.packages("httr")
library(httr)
## Warning: package 'httr' was built under R version 4.0.5
Archivo <- GET("https://query.data.world/s/whouwt5ictwdvfdkyhl5tqnyeo3nxk")
date()
## [1] "Wed Jul 28 23:04:14 2021"
#install.packages("XML")
library(XML)
## Warning: package 'XML' was built under R version 4.0.5
Datos3 <- xmlTreeParse(Archivo,useInternal=TRUE)
## No encoding supplied: defaulting to UTF-8.
class(Datos3)
## [1] "XMLInternalDocument" "XMLAbstractDocument"

Cabe resaltar que el anterior dataset obtenido no se puede revisar con la función head al no ser de tipo data.frame sino un Xml por ello toca utilizar mas funciones del mismo paquete para poder acceder a nodos del documento especificando diferentes clases o cosas que se desen

nodoRaiz <- xmlRoot(Datos3)
head(nodoRaiz)
## $table
## <table study="AEO2011" table="1-AEO2011">
##   <label>Table 1. Total Energy Supply, Disposition, and Price Summary</label>
##   <number>1</number>
##   <name>Total Energy Supply, Disposition, and Price Summary</name>
##   <data>
##     <row number="1" likelyParentRowNumber="1">
##       <label>Total Energy Supply, Disposition, and Price Summary, Reference case</label>
##       <row number="2" likelyParentRowNumber="1">
##         <label>(quadrillion Btu, unless otherwise noted)</label>
##       </row>
##       <row number="3" likelyParentRowNumber="1">
##         <label>Production</label>
##         <row number="4" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Crude Oil and Lease Condensate</label>
##         </row>
##         <row number="5" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Natural Gas Plant Liquids</label>
##         </row>
##         <row number="6" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Dry Natural Gas</label>
##         </row>
##         <row number="7" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Coal</label>
##         </row>
##         <row number="8" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Nuclear Power</label>
##         </row>
##         <row number="9" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Hydropower</label>
##         </row>
##         <row number="10" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Biomass</label>
##         </row>
##         <row number="11" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Other Renewable Energy</label>
##         </row>
##         <row number="12" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="3" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Other</label>
##         </row>
##       </row>
##       <row number="14" likelyParentRowNumber="1">
##         <label>Imports</label>
##         <row number="15" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="14" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Crude Oil</label>
##         </row>
##         <row number="16" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="14" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Liquid Fuels</label>
##         </row>
##         <row number="17" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="14" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Natural Gas</label>
##         </row>
##         <row number="18" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="14" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Other Imports</label>
##         </row>
##       </row>
##       <row number="20" likelyParentRowNumber="1">
##         <label>Exports</label>
##         <row number="21" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="20" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Petroleum</label>
##         </row>
##         <row number="22" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="20" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Natural Gas</label>
##         </row>
##         <row number="23" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="20" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Coal</label>
##         </row>
##       </row>
##       <row number="25" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="1" likelyIsTotal="false" is2009RealPrice="false">
##         <label>Discrepancy</label>
##       </row>
##       <row number="26" likelyParentRowNumber="1">
##         <label>Consumption</label>
##         <row number="27" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Liquid Fuels</label>
##         </row>
##         <row number="28" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Natural Gas</label>
##         </row>
##         <row number="29" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Coal</label>
##         </row>
##         <row number="30" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Nuclear Power</label>
##         </row>
##         <row number="31" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Hydropower</label>
##         </row>
##         <row number="32" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Biomass</label>
##         </row>
##         <row number="33" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Other Renewable Energy</label>
##         </row>
##         <row number="34" unitsRowNumber="2" units="quadrillion Btu" likelyParentRowNumber="26" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Other</label>
##         </row>
##       </row>
##       <row number="36" likelyParentRowNumber="1">
##         <label>Prices</label>
##         <row number="37" unitsRowNumber="37" units="$ per barrel" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Low Sulfur Light Price</label>
##         </row>
##         <row number="38" unitsRowNumber="38" units="$ per barrel" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Imported Crude Oil Price</label>
##         </row>
##         <row number="39" unitsRowNumber="39" units="$ / mmBtu" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Gas Price at Henry Hub</label>
##         </row>
##         <row number="40" unitsRowNumber="40" units="$ / mmBtu" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Gas Wellhead Price</label>
##         </row>
##         <row number="41" unitsRowNumber="41" units="$ / Mcf" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Gas Wellhead Price</label>
##         </row>
##         <row number="42" unitsRowNumber="42" units="$ / ton" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Coal Minemouth Price</label>
##         </row>
##         <row number="43" unitsRowNumber="43" units="$ / million Btu" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Coal Delivered Price</label>
##         </row>
##         <row number="44" unitsRowNumber="44" units="cents per kilowatthour" likelyParentRowNumber="36" likelyIsTotal="false" is2009RealPrice="true">
##           <label>Electricity</label>
##         </row>
##       </row>
##       <row number="45" likelyParentRowNumber="1">
##         <label>Prices</label>
##         <row number="46" unitsRowNumber="46" units="$ per barrel" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Low Sulfur Light Price</label>
##         </row>
##         <row number="47" unitsRowNumber="47" units="$ per barrel" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Imported Crude Oil Price</label>
##         </row>
##         <row number="48" unitsRowNumber="48" units="$ / mmBtu" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Gas Price at Henry Hub</label>
##         </row>
##         <row number="49" unitsRowNumber="49" units="$ / mmBtu" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Gas Wellhead Price</label>
##         </row>
##         <row number="50" unitsRowNumber="50" units="$ / Mcf" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Gas Wellhead Price</label>
##         </row>
##         <row number="51" unitsRowNumber="51" units="$ / ton" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Coal Minemouth Price</label>
##         </row>
##         <row number="52" unitsRowNumber="52" units="$ / million Btu" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Coal Delivered Price</label>
##         </row>
##         <row number="53" unitsRowNumber="53" units="cents per kilowatthour" likelyParentRowNumber="45" likelyIsTotal="false" is2009RealPrice="false">
##           <label>Electricity</label>
##         </row>
##       </row>
##     </row>
##   </data>
## </table> 
## 
## attr(,"class")
## [1] "XMLInternalNodeList" "XMLNodeList"
xmlName(nodoRaiz)
## [1] "aeo"
head(names(nodoRaiz))
##   table   table   table   table   table   table 
## "table" "table" "table" "table" "table" "table"
nodoEspecifico <- nodoRaiz[[5]]
head(nodoEspecifico)
## $label
## <label>Table 5. Commercial Sector Key Indicators and Consumption</label> 
## 
## attr(,"class")
## [1] "XMLInternalNodeList" "XMLNodeList"
ValorEspecificoDeUnNodoEspecifico <-nodoRaiz[[5]][[3]]
ValorEspecificoDeUnNodoEspecifico
## <name>Commercial Sector Key Indicators and Consumption</name>
PonerValoresDeNodosComoLineas <- xmlSApply(nodoRaiz,xmlValue)
head(PonerValoresDeNodosComoLineas,3)
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           table 
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      "Table 1. Total Energy Supply, Disposition, and Price Summary1Total Energy Supply, Disposition, and Price SummaryTotal Energy Supply, Disposition, and Price Summary, Reference case(quadrillion Btu, unless otherwise noted)ProductionCrude Oil and Lease CondensateNatural Gas Plant LiquidsDry Natural GasCoalNuclear PowerHydropowerBiomassOther Renewable EnergyOtherImportsCrude OilLiquid FuelsNatural GasOther ImportsExportsPetroleumNatural GasCoalDiscrepancyConsumptionLiquid FuelsNatural GasCoalNuclear PowerHydropowerBiomassOther Renewable EnergyOtherPricesLow Sulfur Light PriceImported Crude Oil PriceGas Price at Henry HubGas Wellhead PriceGas Wellhead PriceCoal Minemouth PriceCoal Delivered PriceElectricityPricesLow Sulfur Light PriceImported Crude Oil PriceGas Price at Henry HubGas Wellhead PriceGas Wellhead PriceCoal Minemouth PriceCoal Delivered PriceElectricity" 
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           table 
## "Table 2. Energy Consumption by Sector and Source - United States2Energy Consumption by Sector and Source - United StatesEnergy Consumption by Sector and Source, United States, Reference case(quadrillion Btu, unless otherwise noted)ResidentialLiquefied Petroleum GasesKeroseneDistillate Fuel OilNatural GasCoalRenewable EnergyElectricityDelivered EnergyElectricity Related LossesCommercialLiquefied Petroleum GasesMotor GasolineKeroseneDistillate Fuel OilResidual Fuel OilNatural GasCoalRenewable EnergyElectricityDelivered EnergyElectricity Related LossesIndustrialLiquefied Petroleum GasesMotor GasolineDistillate Fuel OilResidual Fuel OilPetrochemical FeedstocksOther PetroleumNatural GasNatural-Gas-to-Liquids Heat and PowerLease and Plant FuelMetallurgical CoalOther Industrial CoalCoal-to-Liquids Heat and PowerNet Coal Coke ImportsBiofuels Heat and CoproductsRenewable EnergyElectricityDelivered EnergyElectricity Related LossesTransportationLiquefied Petroleum GasesE85Motor GasolineJet FuelDistillate Fuel OilResidual Fuel OilOther PetroleumPipeline Fuel Natural GasCompressed Natural GasLiquid HydrogenElectricityDelivered EnergyElectricity Related LossesDelivered Energy Consumption, All SectorsLiquefied Petroleum GasesE85Motor GasolineJet FuelKeroseneDistillate Fuel OilResidual Fuel OilPetrochemical FeedstocksOther PetroleumNatural GasNatural-Gas-to-Liquids Heat and PowerLease and Plant FuelPipeline Natural GasMetallurgical CoalOther CoalCoal-to-Liquids Heat and PowerNet Coal Coke ImportsBiofuels Heat and CoproductsRenewable EnergyLiquid HydrogenElectricityDelivered EnergyElectricity Related LossesElectric PowerDistillate Fuel OilResidual Fuel OilNatural GasSteam CoalNuclear PowerRenewable EnergyElectricity ImportsTotal Energy ConsumptionLiquefied Petroleum GasesE85Motor GasolineJet FuelKeroseneDistillate Fuel OilResidual Fuel OilPetrochemical FeedstocksOther PetroleumNatural GasNatural-Gas-to-Liquids Heat and PowerLease and Plant FuelPipeline Natural GasMetallurgical CoalOther CoalCoal-to-Liquids Heat and PowerNet Coal Coke ImportsNuclear PowerBiofuels Heat and CoproductsRenewable EnergyLiquid HydrogenElectricity ImportsEnergy Use and Related StatisticsDelivered Energy UseTotal Energy UseEthanol Consumed in Motor Gasoline and E85PopulationUS GDPCarbon Dioxide Emissionstons carbon dioxide equivalent)" 
##                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           table 
##                                                                                                                                                                                                                                                                                                 "Table 3. Energy Prices by Sector and Source - United States3Energy Prices by Sector and Source - United StatesEnergy Prices by Sector and Source, United States, Reference case(2009 dollars per million Btu, unless otherwise noted)ResidentialLiquefied Petroleum GasesDistillate Fuel OilNatural GasElectricityCommercialLiquefied Petroleum GasesDistillate Fuel OilResidual FuelNatural GasElectricityIndustrialLiquefied Petroleum GasesDistillate Fuel OilResidual Fuel OilNatural GasMetallurgical CoalOther Industrial CoalCoal to LiquidsElectricityTransportationLiquefied Petroleum GasesE85Motor GasolineJet FuelDiesel Fuel (distillate fuel oil)Residual Fuel OilNatural GasElectricityElectric PowerDistillate Fuel OilResidual Fuel OilNatural GasSteam CoalAverage Price to All UsersLiquefied Petroleum GasesE85Motor GasolineJet FuelDistillate Fuel OilResidual Fuel OilNatural GasMetallurgical CoalOther CoalCoal to LiquidsElectricityNon-Renewable Energy Expenditures by SectorResidentialCommercialIndustrialTransportationTotal Non-Renewable ExpendituresTransportation Renewable ExpendituresTotal Expenditures(billion 2009 dollars)Prices in Nominal DollarsResidentialLiquefied Petroleum GasesDistillate Fuel OilNatural GasElectricityCommercialLiquefied Petroleum GasesDistillate Fuel OilResidual FuelNatural GasElectricityIndustrialLiquefied Petroleum GasesDistillate Fuel OilResidual Fuel OilNatural GasMetallurgical CoalOther Industrial CoalCoal to LiquidsElectricityTransportationLiquefied Petroleum GasesE85Motor GasolineJet FuelDiesel Fuel (distillate fuel oil)Residual Fuel OilNatural GasElectricityElectric PowerDistillate Fuel OilResidual Fuel OilNatural GasSteam CoalAverage Price to All UsersLiquefied Petroleum GasesE85Motor GasolineJet FuelDistillate Fuel OilResidual Fuel OilNatural GasMetallurgical CoalOther CoalCoal to LiquidsElectricityNon-Renewable Energy Expenditures by SectorResidentialCommercialIndustrialTransportationTotal Non-Renewable ExpendituresTransportation Renewable ExpendituresTotal Expenditures(billion nominal dollars)"
CategoriasDeCadaNodoOTabla <- xpathSApply(nodoRaiz,"//label",xmlValue)
head(CategoriasDeCadaNodoOTabla)
## [1] "Table 1. Total Energy Supply, Disposition, and Price Summary"       
## [2] "Total Energy Supply, Disposition, and Price Summary, Reference case"
## [3] "(quadrillion Btu, unless otherwise noted)"                          
## [4] "Production"                                                         
## [5] "Crude Oil and Lease Condensate"                                     
## [6] "Natural Gas Plant Liquids"

Leer JSON

Despues se enseña a obtener datos de tipo JSON, para ello utilizamoas el paquete jsonlite, y la función fromJSON()que convierte el url de tipo JSON en una lista de R, a la cual podemos acceder a sus elementos obteniendo diferentes data.frames. Tambien cabe resltar que de este paquete se puede vovler a escribir un archivo JSON con la función toJSON() donde se indica el atributo pretty=TRUEpara hacer que se observe con llaves caracteristicas del tipo JSON m

library(jsonlite)
## Warning: package 'jsonlite' was built under R version 4.0.5
Archivo <- "https://datosabiertos.bogota.gov.co/dataset/d2ad3bde-f835-4c01-a419-53902a16d1b3/resource/d1b71ea0-6e13-4f9e-aa46-fa41c496ab16/download/parques.geojson"
jsonData <- fromJSON(Archivo)
data <-jsonData[[3]]
data <-data$properties
head(data)
##   OBJECTID SHAPE_Leng SHAPE_Area ID_PARQUE ESTRATO    COORDENADA    COORDENA_1
## 1     5075   305.9956  2143.9530    12-157       5 102147,368492 109832,960404
## 2     5077   369.7889  8296.3422    16-010       3 97340,7046936 101256,344212
## 3     5078   327.6652  4008.5506    16-078       3 97279,6425538 101141,304905
## 4     5079   300.2943  1607.5566    10-575       3 95425,4021427 111351,077576
## 5     5080   127.5994   943.8615    07-318       2 86917,7080302 101992,618191
## 6     5081   259.7845  2193.9310    07-319       2 86691,0683295 101804,139997
##                                             npar
## 1 AGRUPACIàN DE VIVIENDA VILLA CALASANZ II ETAPA
## 2  VERAGUAS CENTRAL (BARRIO COMUNEROS Y BOCHICA)
## 3  VERAGUAS CENTRAL (BARRIO COMUNEROS Y BOCHICA)
## 4                      URBANIZACIàN  LOS µNGELES
## 5                            DESARROLLO ISLANDIA
## 6 DASARROLLO GRAN COLOMBIANO II SECTOR- LAURELES
##                                       NOMBRE_PAR CODIGOPOT         TIPOPARQUE
## 1 AGRUPACIàN DE VIVIENDA VILLA CALASANZ II ETAPA      <NA>     PARQUE VECINAL
## 2  VERAGUAS CENTRAL (BARRIO COMUNEROS Y BOCHICA)      <NA>     PARQUE VECINAL
## 3  VERAGUAS CENTRAL (BARRIO COMUNEROS Y BOCHICA)      <NA>     PARQUE VECINAL
## 4                      URBANIZACIàN  LOS µNGELES      <NA>     PARQUE VECINAL
## 5                            DESARROLLO ISLANDIA      <NA> PARQUE DE BOLSILLO
## 6 DASARROLLO GRAN COLOMBIANO II SECTOR- LAURELES      <NA>     PARQUE VECINAL
##        LOCNOMBRE ADMINISTRA  ESTADO_CER ID_LOCALID FECHAINCOR
## 1 BARRIOS UNIDOS       <NA> CERTIFICADO         12 20/05/2006
## 2  PUENTE ARANDA       <NA> CERTIFICADO         16 01/01/2004
## 3  PUENTE ARANDA       <NA> CERTIFICADO         16 01/01/2004
## 4       ENGATIVA       <NA> CERTIFICADO         10 20/05/2006
## 5           BOSA       <NA> CERTIFICADO          7 20/05/2006
## 6           BOSA       <NA> CERTIFICADO          7 20/05/2006
JASON <- toJSON(data,pretty = TRUE)

Data Tables

AL finalizar la semana 1 se enseña el manejo de las data.tables, que heredan los atributos de los data.frames, por lo que se pueden manejar de igual forma, aun que cambia un poco su manejo de expresiones, expondré estos conceptos con este ultimo data.frame que obtuve.

Mediante el paquete data.tablese accede al manejo de estas funciones, con la función tables()se osberva que tablas se tienen cargadas; cabe resaltar que se puede leer algun archivo directamente como data.table usando la función fread()que en mi experiencia es mas rápida que la básica read.csvaun asi estando optimizada, e incluso mas rápida que la función read_csvdel paquete readr

library(data.table)
data <- data.table(data)
class(data)
## [1] "data.table" "data.frame"
tables()
##    NAME  NROW NCOL MB
## 1: data 5,315   16  2
##                                                               COLS KEY
## 1: OBJECTID,SHAPE_Leng,SHAPE_Area,ID_PARQUE,ESTRATO,COORDENADA,...    
## Total: 2MB

si quisiera hace un subconujunto de los parques de estrato dos estas serian la forma igual que con un data.frame

data[data$ESTRATO==2,]
##       OBJECTID SHAPE_Leng SHAPE_Area ID_PARQUE ESTRATO    COORDENADA
##    1:     5080  127.59943   943.8615    07-318       2 86917,7080302
##    2:     5081  259.78449  2193.9310    07-319       2 86691,0683295
##    3:     5082  154.53336  1258.2906    01-241       2 105558,806653
##    4:    11028  135.30618  1042.9728    04-476       2 98843,1210914
##    5:     5090  213.51484  2622.6158    19-719       2 92646,9452505
##   ---                                                               
## 1454:    11046  248.04806  1939.7229    18-460       2 96725,7804465
## 1455:    18676  143.64487   660.8323    05-501       2 96635,1199241
## 1456:    18706   46.98359    91.0672    03-171       2 100439,194937
## 1457:    18735  101.81557   253.0186    03-172       2 101058,670455
## 1458:    18742  406.16744  3875.8863    04-477       2 98958,4008721
##          COORDENA_1                                                npar
##    1: 101992,618191                                 DESARROLLO ISLANDIA
##    2: 101804,139997      DASARROLLO GRAN COLOMBIANO II SECTOR- LAURELES
##    3: 118887,978317                               DESARROLLO BUENAVISTA
##    4: 96783,0371776                                         Granada Sur
##    5: 97039,1982285 URBANIZACIàN PROTECHO BOGOTµ II (ETAPA II,III Y IV)
##   ---                                                                  
## 1454: 95247,0118701                        Desarrollo Molinos II Sector
## 1455: 89051,9893221                                       LOS COMUNEROS
## 1456:  98759,635438                                            GIRARDOT
## 1457:  98946,746508                                          LACHES LOS
## 1458: 95069,2904183                 BELLA VISTA SUR ORIENTAL PARTE ALTA
##                                                NOMBRE_PAR CODIGOPOT
##    1:                                 DESARROLLO ISLANDIA      <NA>
##    2:      DASARROLLO GRAN COLOMBIANO II SECTOR- LAURELES      <NA>
##    3:                               DESARROLLO BUENAVISTA      <NA>
##    4:                                         Granada Sur      <NA>
##    5: URBANIZACIàN PROTECHO BOGOTµ II (ETAPA II,III Y IV)      <NA>
##   ---                                                              
## 1454:                        Desarrollo Molinos II Sector      <NA>
## 1455:                                       LOS COMUNEROS      <NA>
## 1456:                                            GIRARDOT      <NA>
## 1457:                                          LACHES LOS      <NA>
## 1458:                 BELLA VISTA SUR ORIENTAL PARTE ALTA      <NA>
##               TIPOPARQUE      LOCNOMBRE ADMINISTRA     ESTADO_CER ID_LOCALID
##    1: PARQUE DE BOLSILLO           BOSA       <NA>    CERTIFICADO          7
##    2:     PARQUE VECINAL           BOSA       <NA>    CERTIFICADO          7
##    3:     PARQUE VECINAL        USAQUEN       <NA>    CERTIFICADO          1
##    4:     PARQUE VECINAL  SAN CRISTOBAL       <NA>    CERTIFICADO          4
##    5:     PARQUE VECINAL CIUDAD BOLIVAR       <NA>    CERTIFICADO         19
##   ---                                                                       
## 1454:     PARQUE VECINAL   RAFAEL URIBE       <NA>    CERTIFICADO         18
## 1455: PARQUE DE BOLSILLO           USME       <NA>    CERTIFICADO          5
## 1456: PARQUE DE BOLSILLO        SANTAFE       <NA>    CERTIFICADO          3
## 1457: PARQUE DE BOLSILLO        SANTAFE       <NA>    CERTIFICADO          3
## 1458:     PARQUE VECINAL  SAN CRISTOBAL       <NA> SIN CERTIFICAR          4
##       FECHAINCOR
##    1: 20/05/2006
##    2: 20/05/2006
##    3: 31/12/2017
##    4: 26/02/2020
##    5: 31/12/2016
##   ---           
## 1454: 05/10/2020
## 1455: 07/10/2020
## 1456: 21/01/2021
## 1457: 05/02/2021
## 1458: 08/02/2021

para hace un subconjkunto de filas es la coma se puede omitir,ya que para una data table lo que esta a la derecha de la coma NO SON COLUMNAS a diferencia del data.frame, sino que despeus de la coma se puden realizar expresiones especificas como la creacion de nuevas columnas

data[c(10,20)] # extrayendo 2 columnas cualquieras
##    OBJECTID SHAPE_Leng SHAPE_Area ID_PARQUE ESTRATO    COORDENADA    COORDENA_1
## 1:    10600    81.1191   194.5937    19-771       1 90291,0181307  96507,798424
## 2:     5073   134.7191  1083.6680    12-155       5 101967,509237 109954,087498
##                                              npar
## 1:                   Desarrollo Arborizadora Alta
## 2: AGRUPACIàN DE VIVIENDA VILLA CALASANZ II ETAPA
##                                        NOMBRE_PAR CODIGOPOT         TIPOPARQUE
## 1:                   Desarrollo Arborizadora Alta      <NA> PARQUE DE BOLSILLO
## 2: AGRUPACIàN DE VIVIENDA VILLA CALASANZ II ETAPA      <NA>     PARQUE VECINAL
##         LOCNOMBRE ADMINISTRA  ESTADO_CER ID_LOCALID FECHAINCOR
## 1: CIUDAD BOLIVAR       <NA> CERTIFICADO         19 31/12/2017
## 2: BARRIOS UNIDOS       <NA> CERTIFICADO         12 20/05/2006
data[,mean(SHAPE_Area)] # obteniendo area promedio
## [1] 6677.718

Notese como solo se pone el nombre de la columna a analizar, ya que se entende que es de la data.table

data[,table(ESTRATO)] # cantidad de parques para cada estrato
## ESTRATO
##     1     2     3     4     5     6 Rural 
##   560  1458  2001   723   295   265    13
data[,table(ESTRATO,ESTADO_CER)] # cantidad de parques para cada estrato de tipo certificado, en investigacion o no certificados
##        ESTADO_CER
## ESTRATO CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1             530                         18             12
##   2            1233                         65            160
##   3            1746                         68            187
##   4             600                         24             99
##   5             266                          6             23
##   6             221                          3             41
##   Rural          11                          2              0
#creacion de nueva columna
data[,TamanoSegunYo:= ifelse(SHAPE_Area>1000,"Grande","Pequeño")] 
data[,c("SHAPE_Area","TamanoSegunYo"),with=FALSE]
##        SHAPE_Area TamanoSegunYo
##    1:   2143.9530        Grande
##    2:   8296.3422        Grande
##    3:   4008.5506        Grande
##    4:   1607.5566        Grande
##    5:    943.8615       Pequeño
##   ---                          
## 5311:    147.8832       Pequeño
## 5312:  11398.9831        Grande
## 5313:    253.0186       Pequeño
## 5314:   3875.8863        Grande
## 5315: 404169.6679        Grande

Cabe resaltar que también se pueden relizar expresiones para la creacion de tablas nuevacolumna:={;}, tambien cabe resltar que para poder hacer subconjuntos de columnas toca especiicar el argumento whith=FALSE

#calculo pro agrupación, similar a tapply de base, o groupby y summarize de dplyr.
data[,PromedioArea:=mean(SHAPE_Area),by=ESTRATO] 
unique(data[,c("PromedioArea","ESTRATO"),with=FALSE])
##    PromedioArea ESTRATO
## 1:     4889.851       5
## 2:     5174.413       3
## 3:     6537.960       2
## 4:     5613.478       1
## 5:     9082.884       4
## 6:   146298.335   Rural
## 7:     9625.911       6
#utilizo unique al haber registros repetidos

Notece como el area promedio de tipo rural es mayor para los estratos 6 o mas ricos de la ciudad.

#Funcion .N para contar y especificacion de llave para no tener que indicar el argumento by y todo lo que se realice se hara respecto a la llave
setkey(data,ESTRATO)
data['5',.N] #cuantos valores para algun tipo de estrato especifico
## [1] 295

Finalmente en cuanto a Data.Tables lo unico que no muestro es el uso de la función merge() en data.tables, lo cual para ello se fija la llave para dos data.tables y se especifica esta llave por la coluna sobre la cual se queire hacer la fusion de tablas, despues es usar merge()directamnete con las dos data tables.

Leer De MySQL

En el curso tambien se explico la conexion a bases de datos MySql para ello se utiliza el paquete RMySql pero para que este funcione adecuadamente se debe tener instalado el servidor de MySql además de definir en windows, este servidor como una variable global.

library(RMySQL)
## Warning: package 'RMySQL' was built under R version 4.0.5
## Loading required package: DBI
## Warning: package 'DBI' was built under R version 4.0.5
Conexion <- dbConnect(MySQL(),user='root',password=contrasena,dbname="tienda",host='localhost')
Conexion
## <MySQLConnection:0,0>

Cabe resaltar que en el comando anterior especifico las cosas básicas para poder conectarce a una base de datos, en este caso una base de datos local de mi computador,donde la contraseña la defino pero no la muestro, y en codigo esa parte del codigo la elimino asi que si alguien lo usa debe especificar su propia contraseña y base de datos.

para el cual tuve siretos problemas que logre solucionar en ProblemaRmySqlen lase gunda respuesta. tambien cabe resaltar que tal base de datos la cree medainte un formulario realizado en C#, donde depronto subo el Código.

basesDeDatos <- dbListTables(Conexion)
basesDeDatos
## [1] "productos"
ColumnasDeAlgunaTabla <-dbListFields(Conexion,"productos")
ColumnasDeAlgunaTabla
## [1] "id"             "codigo"         "nombre"         "descripcion"   
## [5] "precio_publico" "existencias"
resultado <- dbGetQuery(Conexion,"SELECT * FROM tienda.productos")
## Warning in .local(conn, statement, ...): Decimal MySQL column 4 imported as
## numeric
#resultado <-  dbReadTable(Conexion,"productos")#equivalente al anterior
resultado
##   id codigo        nombre        descripcion precio_publico existencias
## 1  1      6  Gaseosa Cola Refresco azucarado           2500          15
## 2  3     10 Gaseosa Pepsi Refresco azucaradp           2700          10
dbDisconnect(Conexion)
## [1] TRUE

En el código anterior,primero reviso que tablas hay en la base de datos mediante dbListTables, despues con dbListFieldsobservo que columnas tiene alguna tabla a observar,y finalmente mediante la función dbGetQuery() obtengo de la conexión mediante algún comando lo que deseo, en este caso obtener la base de datos, a la cual yo aca mediante R ya puedo manejar como quiera al ser un data.frame;finalmente se realiza la desconexion de la base de datos.

Cabe resaltar que en caso de no querer usar el comando SQL para Obetenr los datos se peude utilizar la función dbReadTable. ademas de ello se reslta que en ves de dbGetQuery()se podria utilizar dbSendQuery()y posteriormente ese resutlado obtenerlo con la funcion fetch() , y despues limpiar la query con dbClearResult() aplicada al objeto dato por dbSendQuery().

finalmente encuanto a SQL me gustaria resaltar el paquete sqldf el cual permite ejecutar comandos de sql directamente a un dataframe de R.

Leer HDF5

En el curso tambien se enseño a realizar lectura de archivos .h5, y la escritura de los mismos, donde estos archivos generalemnte es para almacenar datos que van a pesar bastante, sin embargo por esa misma razon no lo planeo realizar en este documento, ya que para leer archivos que encontre online estos pesaban minimo 2GB, y por otro lado no tengo nada pesado para almecenar de tal magnitud, solo mencionare que para ello se necesita el paquete HDF5done se crean los archivos con h5createFile,se observan los datos con h5ls, se escriben objetos que tengamos con h5write y se lee algun archivo externo con h5read

Leer Paginas Web

Con la función url() podemos conectarnos a alguna página web para posteriormente leerla como texto con readLines() y en tal caso tocaría usar funciones de expresiones regulares, como grep() y demás

Pagina <- url("http://hpv.prosperidadsocial.gov.co")
estudio <- readLines(Pagina)
## Warning in readLines(Pagina): incomplete final line found on 'http://
## hpv.prosperidadsocial.gov.co'
head(estudio)
## [1] ""                             ""                            
## [3] "<!DOCTYPE html>"              "<html lang=\"es\">"          
## [5] "<head>"                       "    <meta charset=\"UTF-8\">"
date()
## [1] "Wed Jul 28 23:04:35 2021"

Del código anterior el resutlado que se obtiene es el código fuente de la página la cual es un html.

Además cabe resaltar , que para poder usar esta función url()el link al que accedemos debe ser de tipo http si no, la conexion no se podra abrir, y en tal caso se debera utilizar el paquete httr anteriormente mencuionado y utilizar el método GETy en tal caso el objeto recogido seria un html el cual se puede utilizar mediatne la función htmlTreeParsedel paquete XML similar la proceso mostrado en este documento en la seccion leer XML ; tambiñen cabe resaltar el uso de la función handle, la cual se aplicaría a un link y despues este si se pediría con GET esto solo para mantener el uso de cookies.

Leer Twitter

Para acceder a paginas de Twitter es necesaria la creación de una API de Twitter, y una ves tenida tal applicación, twitter nos dará una clave de consumidor, una clave de consumidor secreta, además de un token y un token secreto, apartir de tales datos, se puede acceder a datos de twitter de diferentes maneras, se puede utilizar el paquete httr, y los paquetes rtweety twitteR, donde en cualquier caso hay que hacer uan autentificación de los datos proveidos por la API; solo pondré los códigos para el paquete de httry rtweet, y posteriomrente pondré algunas funciones para la consulta de datos, donde para el paquete httr estas consultas son algo mas arcaicas ya que se utilizan directamente comandos especificos que la API de twitter nos especifica en su documentanción para pedir diferentes datos ya sea seguidores, ultimos tweets y demás, a diferencia del paquete rtweet donde este trae ya unas funciones especificas para la realización de tales consultas, y en cuanto a twitteR este no lo utilizo ya que es demasiado similar a rtweet.

Cabe resaltar que en el siguiente xodigo pongo en comentarios debido a que este proceso ya lo realice antes, lo que cabe destacar es que si es la priemra ves haciendo esta generación es necesario guardar el archivo con el token generado como RDS, para despeusp oder leerlo facilmente

library(httr)
#ConsumidorClave <- oauth_app("twitter", key = "ClaveDeCOnsumidor", secret = "SecretoDeClaveDeCOnsumidor")
#token <- sign_oauth1.0(ConsumidorClave,token="Token",token_secret = "TOkenSecreto")
#saveRDS(token, file = "twitter.rds") guardar ek archivo con el token en caso de ser la priemera ves
token <- readRDS("twitter.rds")

Una ves generado el token, ya con este podemos acceder a los datos de twitter para ello en la documentacion se encuentran diferentes ejemplos para consultar con el método GET API Twitter

Bogota <- GET("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=bogota&count=200",token)

En el comando anterior, pasamos el ejemplo de consulta respecto a el timeline o ultimos tweets de algun usuario, en ese caso notece que en el link despues del .json o comando que se observa en la página citada anteriormente de la documentación de Twitter se indica el header ?screen_name el cual corresponde a el nombre que tiene un usario normalmente el twitter, y con &seguimos agregando parametros que deseemos, en este caso 200 tweets, finalmente del codigo anterior se obtiene una respuesta de twitter en formato JSON, al cual podemos acceder de manera similar a como lo explique anteriormente y poner nuestros datos en un data.frame del cual extraemos la columna text que tendria los tweets Alcaldia de Bogota

library(jsonlite)
DatosBogota <- content(Bogota)
DatosBogotaEnDataFrame <- fromJSON(toJSON(DatosBogota))
head(DatosBogotaEnDataFrame$text)
## [[1]]
## [1] "El @idubogota tiene previsto intervenir 814, 82 km/carril con los recursos presupuestales de 2021 y las vigencias f… https://t.co/pIeaWxjwAa"
## 
## [[2]]
## [1] "A partir de agosto se iniciarán actividades de mantenimiento y conservación a 35 km/carril de malla vial arterial n… https://t.co/3knHDtnKGP"
## 
## [[3]]
## [1] "Las obras de la @UMVbogota contribuyen a recorridos más seguros. Este 2<U+FE0F><U+20E3>0<U+FE0F><U+20E3>2<U+FE0F><U+20E3>1<U+FE0F><U+20E3> hemos tapado 1<U+FE0F><U+20E3>2<U+FE0F><U+20E3>4<U+FE0F><U+20E3>.2<U+FE0F><U+20E3>6<U+FE0F><U+20E3>8<U+FE0F><U+20E3>… https://t.co/NTzxURG4z6"
## 
## [[4]]
## [1] "A partir de los trabajos nocturnos en los que @idubogota y @UMVbogota aprovechan el bajo flujo vehicular <U+0001F697><U+0001F3CD><U+FE0F><U+0001F68E>, han… https://t.co/VWR98qJkwh"
## 
## [[5]]
## [1] "¡Le apostamos a la reactivación económica! La @UMVbogota no se ha detenido a pesar de la pandemia <U+0001F9A0>. La entidad tra… https://t.co/eWx6O7pANY"
## 
## [[6]]
## [1] "¡No nos detenemos! <U+0001F929> Así quedó la <U+0001F4CD> calle 100 entre carreras 49 y 54 después de las intervenciones nocturnas realiz… https://t.co/gjIFPeLeYg"
date()
## [1] "Wed Jul 28 23:04:39 2021"

usando rtweet

library(rtweet)
## Warning: package 'rtweet' was built under R version 4.0.5
## 
## Attaching package: 'rtweet'
## The following object is masked from 'package:jsonlite':
## 
##     flatten
#token <- create_token(app= "nombreapp" ,consumer_key="",consumer_secret="",access_token="",access_secret="")
#saveRDS(token, file = "twitterRtweet.rds") 
tokenRtweet <- readRDS("twitterRtweet.rds")
 olimpicos <- search_tweets("#Tokio2020",n=200,include_retwets=FALSE,token = tokenRtweet)
 head(olimpicos$text)
## [1] "#AHORA El tirador Alessandro De Souza empezó a disparar en la ronda 5 en #Tokio2020. Ha fallado solo 1 plato. La fe. <U+0001F1F5><U+0001F1EA> https://t.co/4ZkUGFXwB2"                                                                                                                                        
## [2] "4to Set \n#Kor  9\n#Dom  14\n\nJuego liderado por Corea 2-1\n\n#Tokio2020 \n#Volleyball  \n\n#LasReinasDelCaribe \n\n#VamosReinas"                                                                                                                                                                            
## [3] "¿Qué significan los colores de los aros olímpicos<U+0001F3C5>?\n\n<U+0001F535>Los 5 aros son el principal símbolo de los juegos olímpicos<U+0001F3DF><U+FE0F>, cada color representa a un continente<U+0001F30E> y a sus atletas<U+0001F3CA><U+0001F3FD>.\n\n#Tokio2020 #OlympicGames2021 #CongresoTv https://t.co/4qN9OquXul"
## [4] "#Tokyo2020 \n #Tokio2020\n #<U+6A4B><U+672C><U+91D1><U+30E1><U+30C0><U+30EB>\n #shameonjapan\n #Olympics \n #<U+6A4B><U+672C><U+5927><U+8F1D>\nWhat a high level gold medal to impress the world<U+0001F60A> https://t.co/W0zpb8P4Gp"                                                                         
## [5] "<U+0001F1E8><U+0001F1FA> #Tokio2020 La favorita de los 78 Kg Madeleine Malonga de Francia vence en un tremendo combate que se extendió a regla de oro a Kaliema Antomarchi. La cubana de todas formas se va al repechaje.  @radiorebeldecu @radio_cubana @oneliocc @InderCuba @CMontiller #HagamosloPorCuba https://t.co/YNTdurJ5Mx"
## [6] "#EcuatorianosEnJJOO #Tokio2020 #Judo \n\nVanessa Chalá  cayó por #Ippon ante Anastasia Turchin de Ucrania, a lo 3:42 minutos de combate, en la cat. -78kg y termina su participación en el certamen. https://t.co/5y00kalFg2"

Notece del código anterior, que el token es necesario crealo esepecificamente para estas funciones de rtweet, no funciona el token del paquete httr, además fijece como con la función search_tweets se obtienen 200 tweets de el numeral tokio2020 y se pone el argumento include_retwets=FALSEpara que solo salgan los tweets originales, seguido del token a usar.

Por ultimo en cuanto a twitter hay mas funciones que se pueden aplicar como get_friends, get_timelines(para el mismo procedimiento anterior con httr) y demás asi como comandos especificos de tipo GET para obtener algo que se desee.

Leer imagenes

En cuanto a imagenes realmente no se enseño mucho, simplemente descargarla y mediante el paquete jpeg y la función readJPEG obtener la inforamción de una imagen de forma nativa.

library(jpeg)
 UDistrital <- "http://laud.udistrital.edu.co/sites/default/files/images/Escudo%20U%20Distrital.jpg"
 download.file(UDistrital,destfile = "Distrital.jpeg",mode = "wb")
 UD <- readJPEG("Distrital.jpeg", native=TRUE)

Cleaning Data

En cuanto a limpiar datos se nombraron ciertos procedimientos a seguir asi como otras funciones, se nombro la función sort la cual se le pasa un vector como argumento, el parametro decreasing, y el parametro na.last=TRUE dando como resutlado las posiciones del vector ordenado de la manera indicada y poniendo de ultimas los NA en caso de haber, también se hablo de la funciñon order que utilice en el anterior proyecto,y de arrange de plyr o dplyrla cual usare mas adelante en este documento.

En tales procedimientos se nombra Ordenar los datos, Agregar Columnas como algun id, tratar los valores faltantes, y para ello se nombra empezar mirando las primeras filas de los datos, hacer resumenes, sacar cuantiles de variables cuantitivas, utilizar table(), y demás procedimientos que realicé en el anterior proyecto, lo unico nuevo que se enseño fueron Croos tabs que aplicaré aca, siguiendo con los datos obtenidos de los parques de bogota y flat tables

 TablaCruzada <- xtabs(SHAPE_Area~ESTRATO+ESTADO_CER,data=data)
 TablaCruzada
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1     2185614.0848                325790.7312    632143.0500
##   2     7225527.4014               1507443.7475    799374.2602
##   3     9092139.1756                341152.9040    920709.0142
##   4     6016850.9793                245944.3477    304130.1377
##   5     1272647.1153                 29893.1040    139965.8242
##   6     2083516.5237                185986.3360    281363.5389
##   Rural 1901071.1695                   807.1826         0.0000

En caso anterior muestro los valores del area del parque respecto al estrato y desagregados por su certificacion, en caso de poner otra variable, salen varias tablas como en el sigueitne código

 TablaCruzadade3 <- xtabs(SHAPE_Area~ESTRATO+ESTADO_CER+TIPOPARQUE,data=data)
 TablaCruzadade3
## , , TIPOPARQUE = ESCENARIO DEPORTIVO
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1           0.0000                     0.0000         0.0000
##   2           0.0000                     0.0000         0.0000
##   3       95786.2129                     0.0000         0.0000
##   4      449521.7760                     0.0000         0.0000
##   5           0.0000                     0.0000         0.0000
##   6           0.0000                     0.0000         0.0000
##   Rural       0.0000                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE DE BOLSILLO
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1      123636.2285                  5591.1022         0.0000
##   2      232082.5146                  9259.0929     15330.8643
##   3      289845.8550                 10584.9993     33209.4039
##   4       86150.0745                   634.9969      9621.5019
##   5       24384.7281                   458.7531      1740.6597
##   6       34981.9535                   318.0087      7473.0336
##   Rural    1222.4169                   807.1826         0.0000
## 
## , , TIPOPARQUE = PARQUE METROPOLITANO
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1           0.0000                     0.0000         0.0000
##   2      523650.4775                243293.0765         0.0000
##   3     2115931.0315                 41233.8981    330974.1512
##   4     2656202.4813                     0.0000         0.0000
##   5           0.0000                     0.0000         0.0000
##   6           0.0000                     0.0000     78813.3339
##   Rural       0.0000                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE METROPOLITANO PROPUESTO
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1      340570.1901                277130.5299    276026.0065
##   2      718633.6546                707025.9463         0.0000
##   3       39589.0063                     0.0000         0.0000
##   4      249182.5451                160066.6042         0.0000
##   5           0.0000                     0.0000         0.0000
##   6           0.0000                179990.5581         0.0000
##   Rural       0.0000                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE REGIONAL
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1           0.0000                     0.0000         0.0000
##   2           0.0000                     0.0000         0.0000
##   3           0.0000                     0.0000         0.0000
##   4           0.0000                     0.0000         0.0000
##   5           0.0000                     0.0000         0.0000
##   6           0.0000                     0.0000         0.0000
##   Rural 1793425.1713                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE VECINAL
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1     1569219.0698                  7668.6665    116049.4574
##   2     4944089.1221                219645.2275    446340.7015
##   3     5608447.4503                179343.7095    502245.1122
##   4     2315216.3732                 85242.7466    294508.6358
##   5     1037905.1935                 29434.3509    138225.1645
##   6     1896376.8487                  5677.7691    177441.6374
##   Rural   63555.6773                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE ZONAL
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1      149697.1504                 35400.4326    240067.5861
##   2      730608.4882                  8793.4650    337702.6944
##   3      942539.6195                 38907.0000     54280.3470
##   4      260577.7292                     0.0000         0.0000
##   5      210357.1937                     0.0000         0.0000
##   6      152157.7215                     0.0000     17635.5340
##   Rural   42867.9041                     0.0000         0.0000
## 
## , , TIPOPARQUE = PARQUE ZONAL PROPUESTO
## 
##        ESTADO_CER
## ESTRATO  CERTIFICADO INVESTIGADO NO CERTIFICADO SIN CERTIFICAR
##   1        2491.4460                     0.0000         0.0000
##   2       76463.1444                319426.9393         0.0000
##   3           0.0000                 71083.2972         0.0000
##   4           0.0000                     0.0000         0.0000
##   5           0.0000                     0.0000         0.0000
##   6           0.0000                     0.0000         0.0000
##   Rural       0.0000                     0.0000         0.0000

donde esta se puede ver de manera mas agrupada con una tabla plana con la función ftable

 TablaPLana <-ftable(TablaCruzadade3)
 TablaPLana 
##                                    TIPOPARQUE ESCENARIO DEPORTIVO PARQUE DE BOLSILLO PARQUE METROPOLITANO PARQUE METROPOLITANO PROPUESTO PARQUE REGIONAL PARQUE VECINAL PARQUE ZONAL PARQUE ZONAL PROPUESTO
## ESTRATO ESTADO_CER                                                                                                                                                                                         
## 1       CERTIFICADO                                        0.0000        123636.2285               0.0000                    340570.1901          0.0000   1569219.0698  149697.1504              2491.4460
##         INVESTIGADO NO CERTIFICADO                         0.0000          5591.1022               0.0000                    277130.5299          0.0000      7668.6665   35400.4326                 0.0000
##         SIN CERTIFICAR                                     0.0000             0.0000               0.0000                    276026.0065          0.0000    116049.4574  240067.5861                 0.0000
## 2       CERTIFICADO                                        0.0000        232082.5146          523650.4775                    718633.6546          0.0000   4944089.1221  730608.4882             76463.1444
##         INVESTIGADO NO CERTIFICADO                         0.0000          9259.0929          243293.0765                    707025.9463          0.0000    219645.2275    8793.4650            319426.9393
##         SIN CERTIFICAR                                     0.0000         15330.8643               0.0000                         0.0000          0.0000    446340.7015  337702.6944                 0.0000
## 3       CERTIFICADO                                    95786.2129        289845.8550         2115931.0315                     39589.0063          0.0000   5608447.4503  942539.6195                 0.0000
##         INVESTIGADO NO CERTIFICADO                         0.0000         10584.9993           41233.8981                         0.0000          0.0000    179343.7095   38907.0000             71083.2972
##         SIN CERTIFICAR                                     0.0000         33209.4039          330974.1512                         0.0000          0.0000    502245.1122   54280.3470                 0.0000
## 4       CERTIFICADO                                   449521.7760         86150.0745         2656202.4813                    249182.5451          0.0000   2315216.3732  260577.7292                 0.0000
##         INVESTIGADO NO CERTIFICADO                         0.0000           634.9969               0.0000                    160066.6042          0.0000     85242.7466       0.0000                 0.0000
##         SIN CERTIFICAR                                     0.0000          9621.5019               0.0000                         0.0000          0.0000    294508.6358       0.0000                 0.0000
## 5       CERTIFICADO                                        0.0000         24384.7281               0.0000                         0.0000          0.0000   1037905.1935  210357.1937                 0.0000
##         INVESTIGADO NO CERTIFICADO                         0.0000           458.7531               0.0000                         0.0000          0.0000     29434.3509       0.0000                 0.0000
##         SIN CERTIFICAR                                     0.0000          1740.6597               0.0000                         0.0000          0.0000    138225.1645       0.0000                 0.0000
## 6       CERTIFICADO                                        0.0000         34981.9535               0.0000                         0.0000          0.0000   1896376.8487  152157.7215                 0.0000
##         INVESTIGADO NO CERTIFICADO                         0.0000           318.0087               0.0000                    179990.5581          0.0000      5677.7691       0.0000                 0.0000
##         SIN CERTIFICAR                                     0.0000          7473.0336           78813.3339                         0.0000          0.0000    177441.6374   17635.5340                 0.0000
## Rural   CERTIFICADO                                        0.0000          1222.4169               0.0000                         0.0000    1793425.1713     63555.6773   42867.9041                 0.0000
##         INVESTIGADO NO CERTIFICADO                         0.0000           807.1826               0.0000                         0.0000          0.0000         0.0000       0.0000                 0.0000
##         SIN CERTIFICAR                                     0.0000             0.0000               0.0000                         0.0000          0.0000         0.0000       0.0000                 0.0000

Otra cosa que se resalta es el operador %in%el cual puede sr una ofrma mas rapida de hacer un subconjunto de algun vector por ejemplo si se quisiera sacar los registros con estrao 1 2 y 3 normalemente sería usando el operador |

data[(data$ESTRATO == 1 | data$ESTRATO == 2 | data$ESTRATO == 3),]
##       OBJECTID SHAPE_Leng  SHAPE_Area ID_PARQUE ESTRATO    COORDENADA
##    1:     5083  122.44411    673.7954    05-443       1 97087,7241926
##    2:    10600   81.11910    194.5937    19-771       1 90291,0181307
##    3:     5072   68.45705    257.9770    04-342       1 100867,326005
##    4:     5091  679.19316   5352.3034    19-722       1 90264,1539924
##    5:     5092   89.70923    310.5024    19-723       1 90068,4023667
##   ---                                                                
## 4015:    18707  182.69602    169.5795    18-461       3 94945,3120986
## 4016:    18713   47.81164    142.8154    10-809       3 96494,9762982
## 4017:    18714   71.51606    177.2922    10-810       3 96582,0407222
## 4018:    18715   48.65344    147.8832    10-811       3 96606,4721419
## 4019:    18777 3001.93889 404169.6679    03-035       3             0
##          COORDENA_1
##    1: 87542,5058796
##    2:  96507,798424
##    3:   96954,91233
##    4: 98064,0025543
##    5: 98050,3749333
##   ---              
## 4015: 96844,4940209
## 4016: 110981,525387
## 4017: 110955,417235
## 4018: 110944,022849
## 4019:             0
##                                                                     npar
##    1:                                                       EL SALTEADOR
##    2:                                       Desarrollo Arborizadora Alta
##    3:                                        DESARROLLO LA GRAN COLOMBIA
##    4:                                           DESARROLLO SIERRA MORENA
##    5:                                           DESARROLLO SIERRA MORENA
##   ---                                                                   
## 4015:                                  UNIDAD RESIDENCIAL FRANCISCO VEGA
## 4016:                                     REFUGIO DEL NORTE URBANIZACION
## 4017:                                     REFUGIO DEL NORTE URBANIZACION
## 4018:                                     REFUGIO DEL NORTE URBANIZACION
## 4019: PARQUE NACIONAL (PM-2A) ENRIQUE OLAYA HERRERA ( SECTOR HISTORICO )
##                                                               NOMBRE_PAR
##    1:                                                       EL SALTEADOR
##    2:                                       Desarrollo Arborizadora Alta
##    3:                                        DESARROLLO LA GRAN COLOMBIA
##    4:                                           DESARROLLO SIERRA MORENA
##    5:                                           DESARROLLO SIERRA MORENA
##   ---                                                                   
## 4015:                                  UNIDAD RESIDENCIAL FRANCISCO VEGA
## 4016:                                     REFUGIO DEL NORTE URBANIZACION
## 4017:                                     REFUGIO DEL NORTE URBANIZACION
## 4018:                                     REFUGIO DEL NORTE URBANIZACION
## 4019: PARQUE NACIONAL (PM-2A) ENRIQUE OLAYA HERRERA ( SECTOR HISTORICO )
##       CODIGOPOT           TIPOPARQUE      LOCNOMBRE ADMINISTRA  ESTADO_CER
##    1:      <NA>   PARQUE DE BOLSILLO           USME       <NA> CERTIFICADO
##    2:      <NA>   PARQUE DE BOLSILLO CIUDAD BOLIVAR       <NA> CERTIFICADO
##    3:      <NA>   PARQUE DE BOLSILLO  SAN CRISTOBAL       <NA> CERTIFICADO
##    4:      <NA>       PARQUE VECINAL CIUDAD BOLIVAR       <NA> CERTIFICADO
##    5:      <NA>   PARQUE DE BOLSILLO CIUDAD BOLIVAR       <NA> CERTIFICADO
##   ---                                                                     
## 4015:      <NA>   PARQUE DE BOLSILLO   RAFAEL URIBE       <NA> CERTIFICADO
## 4016:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4017:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4018:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4019:      PM2A PARQUE METROPOLITANO        SANTAFE       IDRD CERTIFICADO
##       ID_LOCALID FECHAINCOR TamanoSegunYo PromedioArea
##    1:          5 31/12/2016       Pequeño     5613.478
##    2:         19 31/12/2017       Pequeño     5613.478
##    3:          4 20/05/2006       Pequeño     5613.478
##    4:         19 31/12/2016        Grande     5613.478
##    5:         19 31/12/2016       Pequeño     5613.478
##   ---                                                 
## 4015:         18 21/01/2021       Pequeño     5174.413
## 4016:         10 21/01/2021       Pequeño     5174.413
## 4017:         10 22/01/2021       Pequeño     5174.413
## 4018:         10 22/01/2021       Pequeño     5174.413
## 4019:          3 16/04/2021        Grande     5174.413

con el operador %in%se realiza mas rápido

data[data$ESTRATO %in% c(1,2,3),]
##       OBJECTID SHAPE_Leng  SHAPE_Area ID_PARQUE ESTRATO    COORDENADA
##    1:     5083  122.44411    673.7954    05-443       1 97087,7241926
##    2:    10600   81.11910    194.5937    19-771       1 90291,0181307
##    3:     5072   68.45705    257.9770    04-342       1 100867,326005
##    4:     5091  679.19316   5352.3034    19-722       1 90264,1539924
##    5:     5092   89.70923    310.5024    19-723       1 90068,4023667
##   ---                                                                
## 4015:    18707  182.69602    169.5795    18-461       3 94945,3120986
## 4016:    18713   47.81164    142.8154    10-809       3 96494,9762982
## 4017:    18714   71.51606    177.2922    10-810       3 96582,0407222
## 4018:    18715   48.65344    147.8832    10-811       3 96606,4721419
## 4019:    18777 3001.93889 404169.6679    03-035       3             0
##          COORDENA_1
##    1: 87542,5058796
##    2:  96507,798424
##    3:   96954,91233
##    4: 98064,0025543
##    5: 98050,3749333
##   ---              
## 4015: 96844,4940209
## 4016: 110981,525387
## 4017: 110955,417235
## 4018: 110944,022849
## 4019:             0
##                                                                     npar
##    1:                                                       EL SALTEADOR
##    2:                                       Desarrollo Arborizadora Alta
##    3:                                        DESARROLLO LA GRAN COLOMBIA
##    4:                                           DESARROLLO SIERRA MORENA
##    5:                                           DESARROLLO SIERRA MORENA
##   ---                                                                   
## 4015:                                  UNIDAD RESIDENCIAL FRANCISCO VEGA
## 4016:                                     REFUGIO DEL NORTE URBANIZACION
## 4017:                                     REFUGIO DEL NORTE URBANIZACION
## 4018:                                     REFUGIO DEL NORTE URBANIZACION
## 4019: PARQUE NACIONAL (PM-2A) ENRIQUE OLAYA HERRERA ( SECTOR HISTORICO )
##                                                               NOMBRE_PAR
##    1:                                                       EL SALTEADOR
##    2:                                       Desarrollo Arborizadora Alta
##    3:                                        DESARROLLO LA GRAN COLOMBIA
##    4:                                           DESARROLLO SIERRA MORENA
##    5:                                           DESARROLLO SIERRA MORENA
##   ---                                                                   
## 4015:                                  UNIDAD RESIDENCIAL FRANCISCO VEGA
## 4016:                                     REFUGIO DEL NORTE URBANIZACION
## 4017:                                     REFUGIO DEL NORTE URBANIZACION
## 4018:                                     REFUGIO DEL NORTE URBANIZACION
## 4019: PARQUE NACIONAL (PM-2A) ENRIQUE OLAYA HERRERA ( SECTOR HISTORICO )
##       CODIGOPOT           TIPOPARQUE      LOCNOMBRE ADMINISTRA  ESTADO_CER
##    1:      <NA>   PARQUE DE BOLSILLO           USME       <NA> CERTIFICADO
##    2:      <NA>   PARQUE DE BOLSILLO CIUDAD BOLIVAR       <NA> CERTIFICADO
##    3:      <NA>   PARQUE DE BOLSILLO  SAN CRISTOBAL       <NA> CERTIFICADO
##    4:      <NA>       PARQUE VECINAL CIUDAD BOLIVAR       <NA> CERTIFICADO
##    5:      <NA>   PARQUE DE BOLSILLO CIUDAD BOLIVAR       <NA> CERTIFICADO
##   ---                                                                     
## 4015:      <NA>   PARQUE DE BOLSILLO   RAFAEL URIBE       <NA> CERTIFICADO
## 4016:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4017:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4018:      <NA>   PARQUE DE BOLSILLO       ENGATIVA       <NA> CERTIFICADO
## 4019:      PM2A PARQUE METROPOLITANO        SANTAFE       IDRD CERTIFICADO
##       ID_LOCALID FECHAINCOR TamanoSegunYo PromedioArea
##    1:          5 31/12/2016       Pequeño     5613.478
##    2:         19 31/12/2017       Pequeño     5613.478
##    3:          4 20/05/2006       Pequeño     5613.478
##    4:         19 31/12/2016        Grande     5613.478
##    5:         19 31/12/2016       Pequeño     5613.478
##   ---                                                 
## 4015:         18 21/01/2021       Pequeño     5174.413
## 4016:         10 21/01/2021       Pequeño     5174.413
## 4017:         10 22/01/2021       Pequeño     5174.413
## 4018:         10 22/01/2021       Pequeño     5174.413
## 4019:          3 16/04/2021        Grande     5174.413

Tambien se resalta la creación de variables binarias como la que ya cree de TamanoSegunYo(representando grande 1 y pequeño 0 podría ser)

Además la creacion de variables categoricas apartir de cauntitivas como los rangos del os cuantiles a los que pertenece el area del parque:

data[,RangoArea:=cut(SHAPE_Area,breaks = quantile(SHAPE_Area))]
data[,c("NOMBRE_PAR","RangoArea"),with=FALSE]
##                          NOMBRE_PAR           RangoArea
##    1:                  EL SALTEADOR            (17,792]
##    2:  Desarrollo Arborizadora Alta            (17,792]
##    3:   DESARROLLO LA GRAN COLOMBIA            (17,792]
##    4:      DESARROLLO SIERRA MORENA (4.37e+03,1.79e+06]
##    5:      DESARROLLO SIERRA MORENA            (17,792]
##   ---                                                  
## 5311:            ILLIMANI (PARAISO) (4.37e+03,1.79e+06]
## 5312:             DESARROLLO SUBATµ            (17,792]
## 5313: VEREDA PASQUILLA LOTE EL RUBÖ (4.37e+03,1.79e+06]
## 5314:             DESARROLLO SUBATµ (1.77e+03,4.37e+03]
## 5315:                      San Juan (4.37e+03,1.79e+06]

Para el código anterior, tambien se puede realizar en caso de no desear el corte por cuantiles, el uso del a función cut2 del paquete Hmisc especificandole a esta función el argumento g=a la cantidad de grupos que queramos.

Se nos dice tambien que utilicemos varaibles de tipo factor lo cual ya realice en el proyecto anterior, en este data set se me ocurriria volver factor especialmente el ESTRATO y mirar psoteriormente algun comportamiento entre el estrato y el area.

Dplyr

En esta parte de limpiar los datos merece una seccion por aparte este famosisimo paquete donde rapidamente utilizare las funciones directamentem, resalto que usaré el famoso pipe %>% que permite segun yo de cierta forma conjugar los vervos a utilizar de dplyr

library(dplyr)
## Warning: package 'dplyr' was built under R version 4.0.5
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:data.table':
## 
##     between, first, last
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
# 1 convertir el objeto a una tbl_df() 
datadplyr <- tbl_df(data) 
## Warning: `tbl_df()` was deprecated in dplyr 1.0.0.
## Please use `tibble::as_tibble()` instead.
datadplyr %>% #dataset a aplicar oepraciones
  select(ESTRATO,NOMBRE_PAR,SHAPE_Area,SHAPE_Leng,)%>% # escogemos columnas con las que deseamos quedarnos
  rename(Area=SHAPE_Area,Longitud = SHAPE_Leng)%>% # cambiamos algunos nombres 
  filter(Area>=1000,Longitud>=100) %>% # filtramos alguans filas que deseemos, notece que no se usa el opeardor & sino solo comas, si se desea utilziar el operador | se puede utilizar con cualqueir naturaleza
  arrange(desc(Area),desc(Longitud),NOMBRE_PAR) %>% # ordenamos los datos por area seguido de longitud y por ultimo por orden alfabetico 
  slice(1:5) # mostramos unas 5 lineas similar al head
## # A tibble: 5 x 4
##   ESTRATO NOMBRE_PAR                           Area Longitud
##   <chr>   <chr>                               <dbl>    <dbl>
## 1 Rural   LA FLORIDA                       1793425.    6297.
## 2 4       SIMON BOLIVAR ( SECTOR CENTRAL ) 1006720.    3950.
## 3 2       Humedal Jaboque                   986042.    6061.
## 4 2       EL PORVENIR (GIBRALTAR)           718634.    3783.
## 5 2       GUAYMARAL (SECTOR USAQUEN)        707026.    5591.

Notece del código que solo mostramos 5 registros y que el parque con mayor area es LA FLORIDA de estrato Rural; cabe resltar que aun asi no se utilice slice, dplyr hará que solo se musetren 10 registros como máximo, ahora continuo con el código para utilizar la combinacion group_by y summarize que básicamente funcionan como un tapply, cotnando además con la ventaja de agrupar directamente porm as variable, si se realizara de la ofrma tradicional, seria necesario crear otra columna que agrupara dos varibles y ahi si realizar el tapply de esa varaible, esto ultimo se realizaría con la función interaction que utilicé en el anterior proyecto.

datadplyr <- tbl_df(data) 
datadplyr %>% 
  select(ESTRATO,NOMBRE_PAR,SHAPE_Area,SHAPE_Leng,ESTADO_CER)%>% 
  rename(Area=SHAPE_Area,Longitud = SHAPE_Leng)%>% 
  filter(Area>=1000,Longitud>=100) %>%  
  arrange(desc(Area),desc(Longitud),NOMBRE_PAR) %>% 
  group_by(ESTRATO,ESTADO_CER) 
## # A tibble: 3,652 x 5
## # Groups:   ESTRATO, ESTADO_CER [19]
##    ESTRATO NOMBRE_PAR                             Area Longitud ESTADO_CER      
##    <chr>   <chr>                                 <dbl>    <dbl> <chr>           
##  1 Rural   LA FLORIDA                           1.79e6    6297. CERTIFICADO     
##  2 4       SIMON BOLIVAR ( SECTOR CENTRAL )     1.01e6    3950. CERTIFICADO     
##  3 2       Humedal Jaboque                      9.86e5    6061. CERTIFICADO     
##  4 2       EL PORVENIR (GIBRALTAR)              7.19e5    3783. CERTIFICADO     
##  5 2       GUAYMARAL (SECTOR USAQUEN)           7.07e5    5591. INVESTIGADO NO ~
##  6 3       EL TUNAL                             5.95e5    3282. CERTIFICADO     
##  7 3       PARQUE NACIONAL (PM-2A) ENRIQUE OL~  4.04e5    3002. CERTIFICADO     
##  8 1       ARBORIZADORA ALTA                    3.41e5    5501. CERTIFICADO     
##  9 6       AGRUPACIàN BOSQUE DE TORCA           2.99e5    4777. CERTIFICADO     
## 10 3       TIMIZA                               2.98e5    2842. CERTIFICADO     
## # ... with 3,642 more rows

notece que se muestran los mismos datos de antes, solo que sobre los datos sale un indicador de Groups indicando cuantos grupos hay; fijece que agrupamos por dos varaibles estrato y tipo de certificación habiendo 19 grupos al agrupar estas dos variables, donde cmo máximo deberian ser 21 al haber 3 tipos de ceritifacion y 7 estratos sin embargo este 19 indica que 2 combinaciones de estrato con tipo de certificacion no existen

datadplyr <- tbl_df(data) 
datadplyr %>% 
  select(ESTRATO,NOMBRE_PAR,SHAPE_Area,SHAPE_Leng,ESTADO_CER)%>% 
  rename(Area=SHAPE_Area,Longitud = SHAPE_Leng)%>% 
  filter(Area>=1000,Longitud>=100) %>%  
  arrange(desc(Area),desc(Longitud),NOMBRE_PAR) %>% 
  group_by(ESTRATO,ESTADO_CER) %>%
  summarize(PromediosAreas=mean(Area),PromediosLongitudes=mean(Longitud),CantidadRegistros=n())
## `summarise()` has grouped output by 'ESTRATO'. You can override using the `.groups` argument.
## # A tibble: 19 x 5
## # Groups:   ESTRATO [7]
##    ESTRATO ESTADO_CER         PromediosAreas PromediosLongitud~ CantidadRegistr~
##    <chr>   <chr>                       <dbl>              <dbl>            <int>
##  1 1       CERTIFICADO                 8055.               628.              256
##  2 1       INVESTIGADO NO CE~         53367.              1546.                6
##  3 1       SIN CERTIFICAR             52679.              1324.               12
##  4 2       CERTIFICADO                 8923.               499.              784
##  5 2       INVESTIGADO NO CE~         31212.               640.               48
##  6 2       SIN CERTIFICAR              5851.               369.              134
##  7 3       CERTIFICADO                 7192.               444.             1224
##  8 3       INVESTIGADO NO CE~          6611.               373.               50
##  9 3       SIN CERTIFICAR              6438.               360.              138
## 10 4       CERTIFICADO                13179.               537.              450
## 11 4       INVESTIGADO NO CE~         10666.               399.               23
## 12 4       SIN CERTIFICAR              3592.               323.               82
## 13 5       CERTIFICADO                 5648.               426.              221
## 14 5       INVESTIGADO NO CE~          5887.               396.                5
## 15 5       SIN CERTIFICAR              6911.               493.               20
## 16 6       CERTIFICADO                12803.               706.              160
## 17 6       INVESTIGADO NO CE~         92834.              2156.                2
## 18 6       SIN CERTIFICAR              9445.               456.               29
## 19 Rural   CERTIFICADO               237481.              1288.                8

Notece que la función n()cuenta cuantos registros hay para el grupo y es especial para elemenos de este tipo; también se resalta la función n_distinct que realiza la misma función de unique pero para dplyr

Creo que hasta este punto a quedado claro el manejo de dplyr la unica función que faltaria es mutate()que simplemente crea nuevas columnas y que estas miasmas columnas que se van creando pueden ser utilizadas para crear nuevas columnas directamente en la misma línea de código donde se utilice muatate; otra función similar es transmutate que reliza lo mismo pero como salida solo nos entrega las vraibles que se crearon; también cabe resaltar que en la función select se puede colocar un argumento para sleecionar de varias columnas aquellas que tengan algu nombre especifico utilizando ends_with o similarres, incluso con expresiones regulares.

Otras cosas a tener en cuenta en la limpieza de datos

Finalmente el el curso se nombran otras cosas, principalmente el manejo de expresiones regulares que ya trate en el proyecto anterior,utilizando funciones normales o del paquete stringr y finalmente el curso finaliza con el manejo de fechas con el paquete lubridate; de esto ultimo no hablaré, ya que muhcas funcioens de respecto a fechas traté en el anterior proyecto y en cuanto a lubridate lo unico que resalto es la facilidad para saber una funciión intuitivamente, ya que solo es saber como se escuentra la fecha y en sese mismo orden aplciar la función pro ejemplo la función ymd() se aplicaria a una fecha que indique año mes y y dia en ese orden.

Otras cosas que no trate fue merge()y join() de base de R y de dplyr respectivametne, esto porque no tengo datasets similares a unir.

Tidy data

En cuanto al concepto de tidy data este se trato varias veces en el curso, sin embargo este no lo trataré principalmente a la ya bastante longitud de este documento. asi mismo como por no encontrar datos rapidamente para aplicar tales conceptos ya que el dataset que traté ya se acomoda a un tidy data según mi opinion, sin embargo nombrare algunos casos en los que no se encuentra tidy la data, y como estos se trata con el paquete tidyr

Encabezados son valores no nombres: esto se refiere a que por ejemplo en el dataset tratado en este proyecto, una columna mostrata el valor de la altura YA directamente respecto a certificado y estrato, entonces no seria tidy data al no haber una columna diferente por cada observacion , este se soluciona con la función gather de tidyr o la función meltde base de R haceidno que lso valores que hayan los separe respecto a las variables que hayan entonces este crearia dos varibles una que dijera varias veces el encabezado y otra con el valor,sin embargo esto no terminaria siendo aún tidy. ya que esa variable primera tendría dos variables aún por lo cual se separarian mediante separate.

Lo anterior son algunas de las cosas otras son mas al manejo de diferentes tablas, como no tener la misma tabla repitiendo ids, sino separar las tablas y que una se quede con los ids de manera única.