Tipos Basicos de datos

2018-10-12

En términos genéricos, todos los elementos que maneja R son objetos: un valor numérico es un objeto, un vector es un objeto, una función es un objeto, una base de datos es un objeto, un gráfico es un objeto, .

Para realizar un uso eficiente de R es preciso entender y aprender a manipular bien las distintas clases de objetos que maneja el programa. En esta sección nos vamos a ocupar particulamente de aquellos objetos que R utiliza para representar datos: valores, vectores, matrices, dataframes, series temporales y listas.

R utiliza, de hecho, programación orientada a objetos. Ello significa que una misma función hace cosas distintas según la clase del objeto que recibe como argumento, pudiendo incluso no hacer nada (o producir un error) si se le pasan argumentos de una clase inadecuada.

A modo de ejemplo, veamos como la función plot() puede mostrar distintos gráficos según la clase del objeto a representar. Para ello supongamos que el siguiente vector representa el número de personas atendidas mensualmente en el servicio de urgencias de un centro de salud durante el pasado año (datos de enero a diciembre):

atendidos <- c(728,632,596,689,745,865,694,583,657,643,794,887)
atendidos
#>  [1] 728 632 596 689 745 865 694 583 657 643 794 887
class(atendidos)
#> [1] "numeric"

La función class() nos devuelve la clase del objeto atendidos, que como vemos es numeric. Podemos obtener una representación gráfica de este vector simplemente mediante:

plot (atendidos)

Ahora convertimos estos datos en serie temporal mediante la función ts(), indicando que esta serie comienza en enero del año 2009 y que tiene una frecuencia de 12 observaciones por año (esto es, una por mes):

atendidos2 <- ts(atendidos,frequency=12,start=c(2009,1))
atendidos2
#>      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#> 2009 728 632 596 689 745 865 694 583 657 643 794 887
class(atendidos2)
#> [1] "ts"

Como podemos ver, la clase del objeto atendidos2 es ts (time series). Podemos comprobar que si aplicamos la misma función plot() a atendidos2, el gráfico obtenido es distinto que cuando se aplica a atendidos, aún cuando los datos sean exactamente los mismos:

plot(atendidos2)

Tipos básicos de datos

En R (como en otros lenguajes de programación) hay dos clases fundamentales de datos: numéricos y alfanuméricos (o cadenas, strings en inglés; todo aquello que no sea un número es una cadena):

x=1
class(x)
#> [1] "numeric"
y="a"
class(y)
#> [1] "character"

Además de estas dos clases fundamentales R dispone de otras clases más específicas; por ejemplo integer para números enteros, complex para números complejos, logical para variables lógicas o matrix para matrices.

Coerción

En R es posible “forzar” (“coerce”) la conversión de una clase de datos en otra, mediante comandos de la forma as.class. Por ejemplo:

x="1"
x
#> [1] "1"
class(x)
#> [1] "character"
y=as.integer(x)
y
#> [1] 1
class(y)
#> [1] "integer"
z=as.character(y)
z
#> [1] "1"
class(z)
#> [1] "character"

Vectores numéricos y alfanuméricos

Se pueden agrupar varios elementos de la misma clase para formar un vector mediante el comando de concatenación c(). La asignación de un nombre de variable a dicho vector se realiza mediante el símbolo =. Así, podemos guardar las edades de 10 personas de una muestra en la variable edad mediante:

edad = c(22, 34, 29, 25, 30, 33, 31, 27, 25, 25)
edad
#>  [1] 22 34 29 25 30 33 31 27 25 25
class(edad)
#> [1] "numeric"

Podemos crear vectores alfanuméricos del mismo modo:

letras=c("a","b","c","d","e")
letras
#> [1] "a" "b" "c" "d" "e"
class(letras)
#> [1] "character"

Si en un vector se combinan elementos de clase numeric y character el vector resultante es de clase character:

mezcla=c(1,2,3,"a","b","c")
mezcla
#> [1] "1" "2" "3" "a" "b" "c"
class(mezcla)
#> [1] "character"