Page cover

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.

Objeto
Tipos
Varios tipos en el mismo

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:

Símbolo
Significado

%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:

Ejercicios

Last updated