En R, existen 6 tipos de datos.Sin embargo, vamos a visualizar 4:
## [1] 1
## [1] 1
## [1] 1
## [1] 2
# Entero
x2<- c(2L)
#Character
x3<-c("Futbol Club Barcelona")
#Lógico
my_logical <- TRUE
x1;x2;x3;my_logical## [1] 1.2
## [1] 2
## [1] "Futbol Club Barcelona"
## [1] TRUE
Con la función typeof() se puede obtener el tipo de datos:
## [1] "double"
## [1] "integer"
## [1] "character"
Un vector en R puede contener una colección de números o de caracteres no numéricos. Para definir un vector, por ejemplo, el vector x = (1, 3, 5) , usaremos el comando de concatenación c.
Ahora vamos a repasar algunas funciones básicas de R, que son de utilidad para una gran diversidad de situaciones, a la hora de trabajar con vectores.
paste0()Con la función paste0() podemos concatenar texto:
## [1] "El tipo de dato de x1 es " "double"
seq()Con la función seq() se pueden generar secuencias de datos basadas en un patrón impuesto por el programador.
Un vector de números consecutivos, por ejemplo c(1,2,3,4,5) se puede definir con 1:5 en R.Alternativamente y de manera general, se puede usar seq():
## [1] 1 2 3 4 5
## [1] 1 11 21 31 41 51 61 71 81 91
rep()Con la función rep(x) se pueden replicar los valores de x
## [1] 1 2 3 4 5 1 2 3 4 5
Con la función rnorm(x) se pueden generar fácilmente una muestra de números aleatorios que sigan una distribución normal:
## [1] -0.42159975 0.53025950 -1.61735918 0.83169123 -1.48315597
## [6] -1.00819132 -0.57936300 0.66003347 0.16247425 1.48044238
## [11] 0.82923321 1.31491549 0.69773005 0.12578882 0.05392670
## [16] 0.80606901 -0.58693774 -1.15490809 -1.11025081 -0.05273140
## [21] -0.63176324 -0.72496686 -2.26479835 -0.31719844 -0.59984557
## [26] 0.05363054 0.34952822 -0.77666732 -0.28370617 -0.03394967
## [31] -0.18627963 0.52292340 0.80479027 0.19333494 -0.12163754
## [36] -0.98345463 -1.02817031 0.03669140 1.36124606 -0.75322964
## [41] -2.53092936 -1.25210095 -0.68871503 -0.92226916 1.02654353
## [46] -0.61524454 0.29193297 -0.62612715 1.57862270 -0.03605387
## [1] 49.51925 50.41369 48.25544 50.88324 48.58514 48.88990 49.40318
## [8] 50.59353 50.18076 51.57334 50.75184 51.11339 50.78636 49.95585
## [15] 49.94164 50.70460 49.21128 48.87230 48.88260 49.98560 49.54614
## [22] 49.31605 47.70034 49.69162 49.29319 50.18911 50.40105 49.22191
## [29] 49.69499 49.90816 49.89629 50.55349 50.82008 50.13074 49.96867
## [36] 49.05620 48.83589 49.97959 51.36073 49.33211 47.33419 48.84185
## [43] 49.15078 49.13361 51.04126 49.38290 50.42741 49.30625 51.53845
## [50] 49.72801
## [1] 0.9946325
Con la función rnorm(x) se pueden generar fácilmente una muestra de números aleatorios que sigan una distribución normal:
## el patrón es: Teniendo un objeto x, entonces para ubicar la observación se genera mediante x[c] donde c es la posición que se desea ubicar
x8[1]## [1] 49.51925
## [1] 48.25544 50.88324 48.58514
# Con índices negativos se establece cuáles entradas no estarán en el
# resultado
x8[-1:-48] #En este caso solo muestra la posición 49 y 50.## [1] 51.53845 49.72801
<, >, ==, >=, <=, !=
## [1] FALSE TRUE TRUE FALSE FALSE
## [1] TRUE TRUE TRUE TRUE TRUE
## [1] FALSE FALSE FALSE FALSE FALSE
## [1] 6 9
& y | son los operadores “y” y “o”, respectivamente, por ejemplo:
## [1] 3 6 9 2 -5
## [1] 4 6 8 12 -2
## [1] -5
## [1] 6 9 -5
& y | son los operadores “y” y “o”, respectivamente, por ejemplo:
## [1] 90 98 -10 22 -9 -55 10 230
## [1] 0 -98 45 -3 1 -4 11 23
## [1] 90 0 35 19 -8 -59 21 253
## [1] 92 100 -8 24 -7 -53 12 232
## [1] 1.000000e+00 7.241768e-196 -1.000000e+45 9.391435e-05
## [5] -9.000000e+00 1.092822e-07 1.000000e+11 2.088047e+54
## [1] 0.00000000 -1.00000000 -4.50000000 -0.13636364 -0.11111111 0.07272727
## [7] 1.10000000 0.10000000
Los factores son un tipo especial de vectores que permiten analizar variables Estadísticas cualitativas nominales o ordinales
## [1] Alajuela Heredia Alajuela Cartago Heredia
## Levels: Alajuela Cartago Heredia
## [1] "factor"
A los factores, se le pueden agregar las categorías o rango de categorías que dicho factor puede tener:
## [1] male female female male
## Levels: male female
## [1] 2
Cuando los factores son cualitativos el orden no es importante, pero cuando son ordinales, es importante indicar el correspondiente orden de los niveles o categorías del factor:
## [1] "high" "low" "medium"
Notese, como las categorías están en desorden.Para corregirlo se utiliza el argumento ordered=TRUE dentro de factor()
## [1] "low" "medium" "high"
En R, una matriz es una coleeción de datos del mismo tipo(numérico,carácter o lógico).A diferencia de los vectores, son bidimensionales, ya que tienen filas y columnas.Se utiliza la función matrix() para construir una matriz.
#Se genera una matriz cuya data se encuentra en el argumento data, definida por el número
# de filas nrow y el número de columnas ncol.El argumento byrow indica la forma que se desea
# popular la matriz.
matriz1<- matrix(data=seq(1,12),nrow=4,ncol= 3,byrow=FALSE)
matriz1## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
## [3,] 3 7 11
## [4,] 4 8 12
# Poner nombres de filas y columnas a la matriz
rownames(matriz1) <- c("a","b","c","d")
colnames(matriz1) <- c("x","y","z")
matriz1## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
Para obtener las dimensiones de la matriz se realiza mediante dim() :
## [1] 4 3
De igual manera que con los vectores, se pueden obtener valores específicos de las matrices mediante sus índices.La regla es matriz[f,c] donde fila es el número de fila deseado y c es el número de columna
## [1] 1
## a b c d
## 1 2 3 4
## x y z
## 1 5 9
## y z
## a 5 9
## b 6 10
Los dataframes se diferencian de las matrices básicamente en dos aspectos:
R tiene por defecto algunos dataframes embedidos para analizar datos.Por ejemplo, vamos a analizar mtcars:
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
## [1] "data.frame"
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
## [1] "mpg" "cyl" "disp" "hp" "drat" "wt" "qsec" "vs" "am" "gear"
## [11] "carb"
#El comando head y tail, generan una muestra de los primeros y últimos registros respectivamente
head(mtcars,5)## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## mpg cyl disp hp drat wt qsec vs am gear carb
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
La función dataframe y as.dataframe crean y convierte a dataframe respectivamente:
#Primero, se generan datos con la función factor:
ojos <- factor(c("Azules", "Marrones", "Marrones"), levels = c("Azules", "Marrones",
"Verdes", "Negros"))
ojos## [1] Azules Marrones Marrones
## Levels: Azules Marrones Verdes Negros
#Posteriormente se mezcla todo en un solo dataframe
datos <- data.frame(Color.ojos = ojos, Peso = c(68, 75, 88), Altura = c(1.65,
1.79, 1.85))
datos## Color.ojos Peso Altura
## 1 Azules 68 1.65
## 2 Marrones 75 1.79
## 3 Marrones 88 1.85
## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
## Alajuela San Pedro TEC
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
#Si queremos visualizar solo una columna, alternativamente se puede usar dataframe$columna
columna1<- datos2$Alajuela
columna1## [1] 1 2 3 4
Podemos ver más de dataframes en https://monashdatafluency.github.io/r-intro-2/data-frames.html
Finalmente tenemos las listas.Las listas son colecciones de objetos que pueden guardar a su vez muchos objetos de diverso tipos.Por ejemplo, el primer objeto puede ser un vector, el segundo una matriz y el tercero un dataframe.Estas son muy útiles para los resultados de funciones más complejas que veremos posteriormente en el curso.
#Se define la lista con objetos creados previamente
lista1<-list(vector=x1,matriz=matriz1,dataframe=datos)
#Se visualiza los resultados de la lista
lista1## $vector
## [1] 1.2
##
## $matriz
## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
##
## $dataframe
## Color.ojos Peso Altura
## 1 Azules 68 1.65
## 2 Marrones 75 1.79
## 3 Marrones 88 1.85
## [1] "vector" "matriz" "dataframe"
Existen varias maneras de obtener los objetos de una lista, como las siguientes:
## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
#Si además queremos visualizar u obtener valores dentro un objeto específico de la lista, se puede realizar lo siguiente
#Esto devuelve, para el objeto 2 de la lista(la matriz),toda la fila 1.
lista1[[2]][1,]## x y z
## 1 5 9
Es importante mencionar, que a una lista se le pueden ir agregando nuevos objetos así surja la necesidad:
#Se indica que se va a guardar en el índice 4 de la lista(el cuál esta "vacío") un nuevo objeto
# de tipo caracter.
lista1[[4]]<- c("Esto es un nuevo objeto")
lista1## $vector
## [1] 1.2
##
## $matriz
## x y z
## a 1 5 9
## b 2 6 10
## c 3 7 11
## d 4 8 12
##
## $dataframe
## Color.ojos Peso Altura
## 1 Azules 68 1.65
## 2 Marrones 75 1.79
## 3 Marrones 88 1.85
##
## [[4]]
## [1] "Esto es un nuevo objeto"
R cuenta con un amplio repertorio de adiciones al lenguaje base llamados “paquetes” o “librerías”, los cuáles son creados por diversos tipos de usuarios para múltiples propósitos.
Existe un repositorio oficial llamado CRAN de donde se pueden descargar versiones estables de los paquetes.Además existen otros repositorios no oficiales como Github en donde los desarrolladores tienen sus versiones de prueba, pero con mayores características, dado que son versiones nuevas de los paquetes que aún no salen a producción.
Veremos brevemente la forma de instalar y cargar paquetes, de manera clásica y de manera dinámica para identificar cuando un paquete se encuentra o no instalado e instalar automáticamente:
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/3.5'
## (as 'lib' is unspecified)
#Una vez instalado el paquete, se debe cargar en el ambiente de R para oder utilizar sus funciones
library(ggplot2)
##Instalar y cargar de manera automatica
##Primero se crea un objeto con los paquetes que se desean instalar/cargar
paquetes<- c("ggplot2","lubridate")
##Aplica un ciclo iterativo para comprobar el estado de cada paquete e instalar si corresponde
for (i in paquetes){
if (i %in% installed.packages()[,"Package"] == FALSE){
install.packages(i,repos="http://cran.rstudio.com/");
}
}
#Carga los paquetes sin generar mensajes o warnings
sapply(paquetes,library,character.only=TRUE,quietly=T)##
## Attaching package: 'lubridate'
## The following object is masked from 'package:base':
##
## date
## $ggplot2
## [1] "ggplot2" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
##
## $lubridate
## [1] "lubridate" "ggplot2" "stats" "graphics" "grDevices" "utils"
## [7] "datasets" "methods" "base"
Hasta el momento solamente hemos visto como importar archivos .csv en R, desde un ambiente local.Para esta clase vamos a recorrer como importar en R otro tipo de archivos y además como leerlos directamente desde una página web por ejemplo.
Con la función read.table() se puede fácilmente leer archivos de extensión .txt.En el siguiente ejemplo veremos como leer este tipo de archivo desde una dirección web:
df <- read.table(file = "https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test.txt",
header = FALSE)
df## V1 V2 V3
## 1 1 6 a
## 2 2 7 b
## 3 3 8 c
## 4 4 9 d
## 5 5 10 e
Idealmente, en el argumento file, se debe pasar solamente el nombre y la extensión del archivo, ya que el working directory ya se debería haber configurado previamente.Al usar esta función, por defecto el objeto se convierte en un dataframe.
Si un archivo de texto esta separado por “,” o “;”, usualmente se lee como un archivo de extensión .csv.Para esto se utiliza la función read.csv :
df <- read.csv("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test.csv",
header = TRUE)
df## Col1 Col2 Col3
## 1 1 2 3
## 2 4 5 6
## 3 7 8 9
## 4 a b c
Si el archivo de texto está separado por otro caracter que no sea tab, “,” o “;”, existe la función read.delim() como variante a read.table()
df <- read.delim("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/test_delim.txt", sep="$")
df## Col1 Col2 Col3
## 1 1 2 3
## 2 4 5 6
## 3 7 8 9
## 4 a b c
Para los ex amantes de excel, R también provee una forma sencilla y flexible de leer datos en este formato.Para esto vamos a utilizar el paquete readxl para facilitar la manipulación:
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:lubridate':
##
## intersect, setdiff, union
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
setwd("/cloud/project/CursoR/Clase4")
exceldf <- read_excel("DGAC_Tipos de Procedimientos 2017-2018.xlsx")## New names:
## * `` -> ...15
## * `` -> ...16
## # A tibble: 6 x 16
## `Año` Institucion Cod `Tipo de proced… `Actualizado al`
## <dbl> <chr> <dbl> <chr> <chr>
## 1 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 2 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 3 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 4 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 5 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## 6 2017 DIRECCION … 3.01e9 LICITACION PUBL… 30/04/2019 06:0…
## # … with 11 more variables: `No de procedimiento` <chr>, `Objeto
## # contractual` <chr>, `Apertura del concurso` <dttm>, `Adjudicacion mas
## # reciente` <chr>, `Monto adjudicado en colones al año 2017` <chr>,
## # `Monto adjudicado en colones al corte(*)` <chr>, `Monto
## # presupuestado` <chr>, Estado <chr>, `ultima modificación` <dttm>,
## # ...15 <lgl>, ...16 <dbl>
Este paquete a su vez permite realizar algunas otras acciones de manipulación de archivos de excel:
## # A tibble: 150 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <chr>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
## 7 4.6 3.4 1.4 0.3 setosa
## 8 5 3.4 1.5 0.2 setosa
## 9 4.4 2.9 1.4 0.2 setosa
## 10 4.9 3.1 1.5 0.1 setosa
## # … with 140 more rows
## [1] "iris" "mtcars" "chickwts" "quakes"
## # A tibble: 71 x 2
## weight feed
## <dbl> <chr>
## 1 179 horsebean
## 2 160 horsebean
## 3 136 horsebean
## 4 227 horsebean
## 5 217 horsebean
## 6 168 horsebean
## 7 108 horsebean
## 8 124 horsebean
## 9 143 horsebean
## 10 140 horsebean
## # … with 61 more rows
## # A tibble: 1,000 x 5
## lat long depth mag stations
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 -20.4 182. 562 4.8 41
## 2 -20.6 181. 650 4.2 15
## 3 -26 184. 42 5.4 43
## 4 -18.0 182. 626 4.1 19
## 5 -20.4 182. 649 4 11
## 6 -19.7 184. 195 4 12
## 7 -11.7 166. 82 4.8 43
## 8 -28.1 182. 194 4.4 15
## 9 -28.7 182. 211 4.7 35
## 10 -17.5 180. 622 4.3 19
## # … with 990 more rows
#Leer datos según el rango en diferentes formatos
read_excel(xls_example,sheet = 1, range = "C1:E4")## # A tibble: 3 x 3
## Petal.Length Petal.Width Species
## <dbl> <dbl> <chr>
## 1 1.4 0.2 setosa
## 2 1.4 0.2 setosa
## 3 1.3 0.2 setosa
## # A tibble: 3 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <chr>
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## # A tibble: 150 x 3
## Sepal.Width Petal.Length Petal.Width
## <dbl> <dbl> <dbl>
## 1 3.5 1.4 0.2
## 2 3 1.4 0.2
## 3 3.2 1.3 0.2
## 4 3.1 1.5 0.2
## 5 3.6 1.4 0.2
## 6 3.9 1.7 0.4
## 7 3.4 1.4 0.3
## 8 3.4 1.5 0.2
## 9 2.9 1.4 0.2
## 10 3.1 1.5 0.1
## # … with 140 more rows
## # A tibble: 4 x 3
## cyl disp hp
## <dbl> <dbl> <dbl>
## 1 6 160 110
## 2 6 160 110
## 3 4 108 93
## 4 6 258 110
# Si el valor de NA, se encuentra en los datos diferente a espacio vacíos, se pueden configurar valores
# personalizados en la función
read_excel(xls_example, na = "setosa")## # A tibble: 150 x 5
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## <dbl> <dbl> <dbl> <dbl> <chr>
## 1 5.1 3.5 1.4 0.2 <NA>
## 2 4.9 3 1.4 0.2 <NA>
## 3 4.7 3.2 1.3 0.2 <NA>
## 4 4.6 3.1 1.5 0.2 <NA>
## 5 5 3.6 1.4 0.2 <NA>
## 6 5.4 3.9 1.7 0.4 <NA>
## 7 4.6 3.4 1.4 0.3 <NA>
## 8 5 3.4 1.5 0.2 <NA>
## 9 4.4 2.9 1.4 0.2 <NA>
## 10 4.9 3.1 1.5 0.1 <NA>
## # … with 140 more rows
A continuación se brinda una guía para la lectura de otro tipo de archivos:
| Tipo de archivo | Paquete | Descripción |
|---|---|---|
| JSON | rjson |
JsonData <- fromJSON(file= "<filename.json>" ) |
| xml | XML |
xmlfile <- xmlTreeParse("<Your URL to the XML data>") |
| html | RCurl y XML |
urldata <- getURL(url)data <- readHTMLTable(urldata,stringsAsFactors = FALSE) |
| SAS,SPSS,etc | foreign |
mySPSSData <- read.spss("example.sav") |
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa