Tipos de variables
Las variables que pueden aparecer en un conjunto de datos pueden ser de varios tipos:
V. Cuantitativas: Son aquellas que representan cantidades numéricas
Continuas: peso, altura, salario
Discretas: edad, número de hijos
V. Cualitativas: Son aquellas que toman un número finito de valores o categorías
Ordinales: se pueden ordenar y asignar un valor
Nominales: No se puede establecer ningún orden: sexo, raza, país de nacimiento
V. Fecha: se consideran variables cuantitativas, pero cada software suele tener un tratamiento específico
Pare ver como se representan estas variables en R, vamos a leer los datos de la siguiente base de datos:
Lectura de datos en R
Lo primero que vamos a hacer antes de empezar a trabajar es leer los datos en R. El formato más cómodo y habitual de lectura en R es el CSV en el que normalmente la primera fila contiene contiene los nombres de las columnas que serán las variables y las siguientes filas contendrán los datos correspondientes. Las columnas están separadas por comas.
Para la lectura de CSV en R usaremos la función read.csv()
y con la functión str()
podemos ver las variables y el tipo de dato con el que se han importado.
Antes de nada con setwd()
vamos a asegurarnos de actualizar el directorio de trabajo y esto lo haremos al inicio de cada tema.
setwd("Estudio_Depuracion_Datos/Tema_1/")
datos<-read.csv("TiposDatos.csv")
str(datos)

Tipos de datos R
En R los datos se guardan en objetos . Los objetos tienen nombre y contenido, pero también atributos que especifican el tipo de datos representados.

Vector
Numérico, carácter o lógico
No
Factor
Numérico o carácter
No
Matriz
Numérico, carácter o lógico
No
Data Frame
Numérico, carácter o lógico
Si
Lista
Numérico, carácter, lógico, función o expresión
Si
Para saber los tipos de datos en R tenemos la función class()
En R hay dos clases fundamentales de datos: numéricos y caracteres:
x=1
class(x)
## [1] "numeric"
y="a"
class(y)
## [1] "character
Podemos agrupar varios elementos en una misma clase usando vectores
## Vectores de clase numérico
edad = c(22, 34, 29, 25, 30, 33, 31, 27, 25, 25)
edad
## [1] 22 34 29 25 30 33 31 27 25 25
## Vectores de clase caracter
letras=c("a","b","c","d","e")
letras
## [1] "a" "b" "c" "d" "e"
Para saber su longitud usamos la función length()
length(edad)
# [1] 10
length(letras)
# [1] 5
Tenemos distintas formas de acceso a las posiciones del vector:
#Para acceder a una posición k del vector:
edad[3]
# [1] 29
#Para acceder a varios valores dentro de un rango:
edad[2:5]
# [1] 34 29 25 30
#Para acceder a varios valores alternos:
edad[c(1,3,7)]
# [1] 22 29 31
Para acceder de forma condicionada a un vector usaremos la función which()
which(edad>25)
# [1] 2 3 5 6 7 8
#Podemos asignar estas posiciones a una nueva variable:
mayores25<-which(edad>25)
edad[mayores25]
# [1] 34 29 30 33 31 27
# y de forma simplificada:
edad[edad>25]
# [1] 34 29 30 33 31 27
Podríamos hacer también una selección en función de valores de otro vector:
sexo <- c("M","H","H","M","M","H","M","M","H","H")
edad[sexo=="M"]
## [1] 22 25 30 31 27
Factores
Un factor es una variable categórica con un número finito de valores o niveles. En R los factores se utilizan habitualmente para realizar clasificaciones de los datos, estableciendo su pertenencia a los grupos o categorías determinados por los niveles del factor.
Los factores juegan un papel muy importante en la elaboración de modelos estadísticos. En particular, los modelos lineales pueden dar resultados muy diferentes según que una variable se declare como numérica o como factor.
Los niveles de un factor puede estar codificados como valores numéricos o como caracteres. Independientemente de que el factor sea numérico o carácter, sus valores son siempre almacenados internamente por R como números enteros, con lo que se consigue economizar memoria.
Ejemplo:
sexo <- factor(sexo,levels=c("H","M"),labels=c("Hombre","Mujer"))
sexo
# [1] Mujer Hombre Hombre Mujer Mujer Hombre Mujer Mujer Hombre Hombre
# Levels: Hombre Mujer
Y podemos construir su tabla de frecuencias con la función table()
table(sexo)
# sexo
# Hombre Mujer
# 5 5
Variables lógicas
Las variables lógicas constituyen un tipo particular de factor en R, que se caracteriza por tomar sólo dos valores: TRUE
o FALSE
codificados, respectivamente, como 1 y 0. Es posible construir condiciones lógicas utilizando los operadores ‘y’ (&
), ‘o’ (|
) y ‘no’ (!
). La comparación de valores se lleva a cabo mediante ==
(‘es igual a’) y !=
(‘es distinto de’).
ATENCIÓN: No debe confundirse el operador de asignación =
con el de comparación ==
.
Ejemplo:
Podemos realizar la tabla de frecuencias anterior pero teniendo sólo en cuenta aquellos individuos que estén solteros:
soltero<-c(TRUE,TRUE,TRUE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE,TRUE)
soltero
# [1] TRUE TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE
table(sexo[soltero==TRUE])
Podemos hacer lo mismo con la función which()
para acceder a las posiciones cuando es TRUE:
which(soltero)
# [1] 1 2 3 6 7 10
table(sexo[which(soltero)])
# Hombre Mujer
# 4 2
Fechas
R almacena las fechas en la clase Date. Esta clase almacena los valores como el número de días transcurridos desde el 1 de enero de 1970; para las fechas anteriores el número de días se cuenta en sentido negativo.
Para crear una fecha en R el modo más sencillo es utilizar la función as.Date()
. Esta función recibe como argumento un dato de fecha en modo carácter y la convierte a la clase Date
. En esta clase, el estándar de fecha que se utiliza (en el que se leen y muestran las fechas si no se indica otra cosa) es “año-mes-día” (yyyy-mm-dd).
Ejemplo
navidad=as.Date("2013-12-25")
navidad
# [1] "2013-12-25"
class(navidad)
# [1] "Date"
Si introducimos la fecha en otro formato (por ejemplo “dia/mes/año”), hemos de indicarlo al usar as.Date
para que R pueda interpretar la fecha correctamente:
navidad=as.Date("25/12/2013",format="%d/%m/%Y")
navidad
# [1] "2013-12-25"
navidad=as.Date("25-dec-13",format="%d-%b-%y")
navidad
# [1] "2013-12-25"
navidad=as.Date("25 December 2013",format="%d %B %Y")
navidad
# [1] "2013-12-25"
Esta conversión opera también sobre vectores (siempre que estén codificados del mismo modo):
dias=c("1/10/2005","2/2/2006","3/4/2006","8/11/2014")
dias
# [1] "1/10/2005" "2/2/2006" "3/4/2006" "8/11/2014"
as.Date(dias,format="%d/%m/%Y")
# [1] "2005-10-01" "2006-02-02" "2006-04-03" "2014-11-08"
Formatos de fecha
Para formatear una fecha se pueden utilizar los siguientes símbolos:
%d
día (numérico, de 0 a 31)
%a
día de la semana abreviado a tres letras
%A
día de la semana (nombre completo)
%m
mes (numérico de 0 a 12)
%b
mes (nombre abreviado a tres letras)
%B
mes (nombre completo)
%y
año (con dos dígitos)
%Y
año (con cuatro dígitos)
La función Sys.Date()
lee la fecha actual del reloj de nuestro ordenador y la codifica como un objeto de la clase Date
:
Sys.Date()
# [1] "2019-02-07"
¿Cómo convertirías la fecha de nacimiento de los datos leídos TipoDatos.csv en formato fecha?
Ahora es tu turno: Realiza los siguientes ejercicios:
EjerciciosLast updated