R trabaja con una gran diversidad de datos.
Al finalizar esta parte reconocerás la diversidad de tipos de datos que se usan en R.
Los cuatro tipos de datos principales de R son:
Para saber el tipo de datos que contiene una variable, usamos la función class.
num <- 13
class(num)
## [1] "numeric"
tex <- "búha"
class(tex)
## [1] "character"
El tipo de dato más utilizado en R.
Los datos numéricos son de dos clases principales:
# el resultado de una operación matemática regular es numérico:
div <- 13 / 7
div
## [1] 1.857143
class(div)
## [1] "numeric"
# asignando un entero a una variable:
ent <- 13L
ent
## [1] 13
class(ent)
## [1] "integer"
# las operaciones matemáticas con enteros no necesariamente producen enteros:
ent_num <- 13L / 7L
ent_num
## [1] 1.857143
class(ent_num)
## [1] "numeric"
Importantes en estadísticas como factores.
El tipo de datos en caracteres o texto tiene dos formas de manejarse:
# asignar texto a variable:
caract <- "uprh"
caract
## [1] "uprh"
class(caract)
## [1] "character"
# crear factor:
fact <- factor("uprh")
fact # el contenido aparece sin " "
## [1] uprh
## Levels: uprh
class(fact)
## [1] "factor"
Con la función nchar podemos medir la ‘longitud’ (length) del contenido de una variable con dato en texto (o numérica).
nchar(caract)
## [1] 4
nchar(123456)
## [1] 6
Fechas y horas
Las operaciones con datos de tiempo, fechas u horas, son siempre complicadas en cualquier lenguaje de programación (y hasta en Excel). Dos clases de datos que se usan en R son:
Date: almacena el número de días desde el 1 de enero de 1970 (día 0). Se crea con la función as.Date.
POSIXct: almacena el número de segundos desde el 1 de enero de 1970. Se crea con la función as.POSIXct.
# una fecha reciente:
hoy <- as.Date("2021-02-06")
hoy
## [1] "2021-02-06"
class(hoy)
## [1] "Date"
# para ver la cantidad de días:
as.numeric(hoy)
## [1] 18664
# una fecha antes de 1970:
luna <- as.Date("1969-07-20")
as.numeric(luna)
## [1] -165
Es muy conveniente para conocer la diferencia en días entre dos fechas.
# días desde la llegada a la luna:
dias_luna <- hoy - luna
dias_luna
## Time difference of 18829 days
Usamos de manera similar POSIXct.
# tiempo hasta hoy
tiempo_hoy <- as.POSIXct("2021-02-06 13:00")
as.numeric(tiempo_hoy)
## [1] 1612630800
# diferencias en minutos y segundos:
difer <- as.POSIXct("2021-02-06 14:55:00") - as.POSIXct("2021-02-06 14:53:23")
difer
## Time difference of 1.616667 mins
Principalmente resultado de expresiones lógicas.
Tienen dos valores: TRUE o FALSE; tienen también valor numérico: 1 o 0.
# pueden asignarse a variables:
verdad <- TRUE
falso <- FALSE
# clase de variable lógica:
class(verdad)
## [1] "logical"
# valor numérico
as.numeric(falso)
## [1] 0
# operaciones entre datos lógicos:
verdad * falso
## [1] 0
El resultado de expresiones lógicas es un dato lógico.
# resultado de una comparación numérica
comparar <- 2 == 3
class(comparar)
## [1] "logical"
comparar
## [1] FALSE
# otra comparación
menor_que <- 2 < 3
menor_que
## [1] TRUE
# comparación de caracteres
comp_texto <- "dato" == "data"
comp_texto
## [1] FALSE
Referencias
Lander, J. P. (2017). R for everyone: Advanced analytics and graphics (Second edition). Addison-Wesley, Boston, MA.