Está en la página 1de 17

Tipos de datos

R permite trabajar con datos de distintos tipos. Los más comunes son:

Numeric: Para datos de tipo numérico. A su vez, dentro del tipo numérico se pueden distinguir
dos subtipos de datos:
Integer: Para datos de tipo entero
Double: Para datos de tipo real (o de doble precisión). Es el tipo de dato numérico que R
considera por defecto, es decir, cuando se define un número en R, éste será de tipo double
Logical: Para datos de tipo lógico o binario. Los valores que pueden tomar las variables de tipo
lógico son TRUE o FALSE
Character: Para caracteres o cadenas de caracteres.

  Operaciones con tipos de datos


Creación de variables

Para crear una variable de tipo double (Datos de tipo real), basta con definir un valor numérico
cualquiera.

> doub <- 4    # Escribimos  doub <- 4 en la consola y pulsamos la tecla “Enter”

Nota:  Es posible incluir comentarios que R no leerá si utilizamos líneas que comiencen con el
carácter #.

En el ejemplo anterior, mediante el operador <-  se asigna a la variable doub el valor 4 (<-  es un


operador de asignación en R). En las nuevas versiones de R se puede utilizar el signo = en lugar
de <-.

> doub=4    # Asigna el valor 4 a la variable doub


> doub    #  muestra el valor de la variable doub

[1] 4

Para definir variables de tipo integer, se aplica la función as.integer() a un dato de tipo numérico.

> int = as.integer(4)



valor de la variable int
> int      #  muestra el
[1] 4

Una variable lógica se define asignando el valor TRUE o FALSE a una variable.

> logi = FALSE


> logi

[1] FALSE

Por último,  R  considera como cadena de caracteres cualquier cosa encerrada entre comillas
dobles (“”).

> char1 = “Hola” # cuidado con las comillas son las de la tecla del número 2
> char1

[1] “Hola”

> char2 <- “5 + 6”


> char2

[1] “5 + 6”

Comprobación del tipo de una variable


Para determinar el tipo de una variable se aplica la función typeof() sobre la variable en cuestión.

> typeof(doub)
[1] “double”

> typeof(int)
[1] “integer”

> typeof(char1)
[1] “character”

  Operadores básicos
R puede utilizarse como una calculadora, ya que tiene implementadas las principales operaciones
aritméticas como son la suma, la diferencia, el producto, la división, la exponenciación, la división
entera y el módulo de la división. Estas operaciones se realizan mediante los símbolos +,  -,  *,  /, 
^,  %/%  y  %%, respectivamente.

> 2^3
[1] 8

> 9/6
[1] 1.5

> 9%/%6
[1] 1

> 9%%6
[1] 3

Como se ha visto anteriormente, en R  es posible definir variables asignándoles un determinado


valor o, incluso, el resultado de una operación. Existen 3 operadores de asignación
diferentes:  <-  ,  =  y  ->. Los dos primeros evalúan la expresión situada en la parte derecha y
asignan el resultado a la variable de la parte izquierda, mientras que el último realiza la asignación
de forma inversa, de manera que es el resultado de la evaluación de expresión de la parte
izquierda el que se asigna a la variable de la derecha.

> a = 2 + 2    # resultado de 2+2 se asigna a la variable a


> b = 3 * 2    # resultado de 3*2 se asigna a la variable b
> b – a -> c    # resultado de b-a se asigna a la variable c

>a
[1] 4

>b
[1] 6

>c
[1] 2

En el ejemplo anterior, las variables  a  y  b  recogen el resultado de una suma y un producto,


respectivamente. Es decir, primero se realiza la operación y el resultado es el que se almacena en
la variable.

Por otra parte, existen varios operadores que permiten establecer comparaciones entre variables.
Son los denominados operadores comparativos, que en  R  vienen representados por los
símbolos  ==  (igual a),  !=  (distinto a),  <  (menor que),  >  (mayor que),  <=  (menor o igual que)
y >= (mayor o igual que). Estos operadores se caracterizan por ser binarios, esto es, únicamente
permiten comparaciones entre dos elementos. Para comparaciones más complejas, se utilizan los
operadores lógicos. Los más utilizados son & (AND ó “y lógico”) y | (OR u “o lógico”).

> a == 5
[1] FALSE

> a == 4 & b < 2


[1] FALSE

> a == 4 | b < 2
[1] TRUE

> a == 4 | b < 2 & c != 9


[1] TRUE

  Otras funciones interesantes


Además de las operaciones elementales,  R  tiene implementadas una amplia variedad de
funciones que permiten la realización de cálculos más complejos. A continuación se muestran
algunas de ellas:

sqrt(x) : Raíz cuadrada de x

abs(x) : Valor absoluto de x

sin(x) : Seno de x

cos(x) :  Coseno de x

tan(x) : Tangente de x

log(x) :  Logaritmo neperiano de x

log10(x) : Logaritmo decimal de x

exp(x) : Exponencial de x

  Estructuras de datos
Hasta el momento se ha visto que se pueden definir variables en  R  que almacenen valores o
resultados de operaciones. Pero cuando se desea guardar un número elevado de valores
conviene organizarlos en estructuras de datos. Las estructuras de datos más utilizadas en R son

Arrays. Pueden tener varias dimensiones pero admiten únicamente un tipo de dato.
Dependiendo del número de dimensiones, se distingue entre
Vectores. Una dimensión
Matrices. Dos dimensiones
Arrays. Tres o más dimensiones.
Factores. Se utilizan para almacenar variables cualitativas en las que no existe un orden
específico entre las categorías.
Factores ordenados. Almacenan variables cualitativas ordinales, es decir, variables
cualitativas con un cierto orden entre sus categorías.
Data frames. Admite variables de distintos tipos, pero con la misma longitud.
Listas. La lista es la estructura de datos más flexible puesto que permite incluir variables de
tipos y longitudes diferentes.

  Creación de estructuras de datos


Una vez presentadas las estructuras de datos, el siguiente paso es aprender a crearlas.

Vectores: Para crear un  vector  se utiliza la función  c,  que concatena todos los elementos que
recibe como argumentos.

c(elemento1, elemento2, elemento3, …)

Matrices:  Las matrices  se definen mediante la función  matrix. Para ello, se ha de indicar qué
datos va a tener la matriz, así como el número de filas y columnas.

matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,…)

Por defecto, la función  matrix  considera una matriz con una sola fila y una sola columna con
valor NA (Not Available). El argumento byrow indica si la matriz se irá completando por columnas
(byrow = FALSE, que es la opción por defecto) o por filas (byrow = TRUE). Modificando estos
argumentos se pueden definir distintas matrices según las necesidades que se tengan.

Arrays: Los arrays se crean a través de la función array, especificando el conjunto de datos que


va a formar parte del array así como las dimensiones del mismo.

array(data = NA, dim,…)

Factores y factores ordenados: Los  factores y factores ordenados en R se crean utilizando las


funciones  factor  y  ordered,  respectivamente. Estas funciones necesitan como argumentos el
conjunto de datos y los niveles o categorías del factor.

factor(x, levels,…)

ordered(x, levels,…)

Un detalle muy importante que hay que tener en cuenta a la hora de definir los niveles de un factor
ordenado es que R  considera que los niveles vienen dados de menor a mayor, es decir, que si
dentro de la función  ordered  se especifica que  levels = c(2, 1, 3),  R  entiende que la primera
categoría es menor que la segunda y que la segunda es, a su vez, menor que la tercera, esto es,
que 2 < 1 < 3.

Data frame y lista: Los data frame y las listas en R se crean utilizando las funciones data.frame y
 list, respectivamente, indicando las variables que conformarán la estructura de datos.

data.frame(variable1, variable2, variable3,…)

list(variable1, variable2, variable3,…)

Veamos algunos ejemplos:

Vectores

>  vec = c(1, 3, 14)


> vec
[1]  1  3 14

Matrices

> mat1 <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)   # por defecto las matrices se completan por
columna
> mat1
[,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6
> mat2 <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3, byrow = TRUE)      # byrow = TRUE indica que
complete la matriz por filas
> mat2
[,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

Nota: Las matrices mat1 y mat2 tienen los mismos elementos, pero en la primera de ellas están
dispuestos por columnas, mientras que en la segunda se han colocado por filas.

Array

> arr <- array(c(1,2,3,4,5,6,7,8), dim = c(2,2,2))


> arr
,,1
[,1] [,2]
[1,]    1    3
[2,]    2    4

,,2
[,1] [,2]
[1,]    5    7
[2,]    6    8

Matrices

> m <- matrix(c(1,1,2,1),2,2)


>m
[,1] [,2]
[1,]    1    2
[2,]    1    1

Factores y Factores ordenados

> fac <- factor(c(“H”,”M”,”M”,”H”,”H”,”M”), levels = c(“H”,”M”))


> ord <- ordered(c(1,2,1,2,3,1,2,1,2), levels = c(1,2,3))

Como se ha resaltado antes, es muy importante tener en cuenta el orden en el que se indican los
niveles de la variable en un factor ordenado. En un factor (no ordenado), el orden en el que
aparecen las categorías de la variable es irrelevante. Así, mientras que los factores ordenados

> ord <-  ordered(c(1,2,1,2,3,1,2,1,2),  levels = c(1,2,3))


> ord2 <-  ordered(c(1,2,1,2,3,1,2,1,2),  levels = c(2,3,1))
> ord3 <-  ordered(c(1,2,1,2,3,1,2,1,2), levels = c(3,1,2))

son distintos, estos otros factores no ordenados

> fac <-   factor(c(“H”,”M”,”M”,”H”,”H”,”M”),  levels = c(“H”,”M”))


> fac2 <-  factor(c(“H”,”M”,”M”,”H”,”H”,”M”),  levels = c(“M”,”H”))

son totalmente equivalentes.

Data frames y Listas

> a <-  c(1,5,4)


> b <-  c(“hola”, “adiós”, “hasta luego”)
> c <-  c(TRUE, FALSE, FALSE)
> d <-  c(1,2,3,4,5)
>  dataframe <-  data.frame(a,  b,  c)
> dataframe
a           b     c
1 1        hola  TRUE
2 5       adiós FALSE
3 4 hasta luego FALSE

>  list1  <-  list(a, b, c)


> list1
[[1]]
[1] 1 5 4
[[2]]
[1] “hola”        “adiós”       “hasta luego”
[[3]]
[1]  TRUE FALSE FALSE

> list2 <-  list(a, b, c, d)


> list2
[[1]]
[1] 1 5 4
[[2]]
[1] “hola”        “adiós”       “hasta luego”
[[3]]
[1]  TRUE FALSE FALSE
[[4]]
[1] 1 2 3 4 5

  Acceso a los elementos de las estructuras de datos


Una vez definida una estructura de datos, es importante conocer cómo acceder a los elementos
que la componen.

En un array (sea cual sea su dimensión), se utilizan los corchetes ([]), dentro de los cuales se
indica la posición del elemento al que queremos acceder en cada una de las dimensiones del
array.

> vec <- c(1, 3, 14)


> vec[3]

[1] 14

> mat1 <- matrix(c(1,2,3,4,5,6), nrow = 2, ncol = 3)


> mat1

[,1] [,2] [,3]



5
[1,]    1    3   
[2,]    2    4    6

> mat1[2, 3]
[1] 6

> arr <- array(c(1,2,3,4,5,6,7,8), dim = c(2,2,2)) # el ultimo 2 indica que son dos matrices
> arr

,,1

[,1]
[,2]

3
[1,]    1   
[2,]    2    4

,,2
[,1]
[,2]

[1,]    5    7
[2,]    6    8

> arr[2, 1, 2]     # el elemento de la segunda fila primera columna de la segunda matriz
[1] 6

También se puede acceder a varios elementos al mismo tiempo usando la función de


concatenación c.

> mat1[c(1,2), 3]      # los elementos (1, 3) y (2, 3) de la matriz


[1] 5 6

En el ejemplo anterior se obtienen dos elementos de la matriz  mat1.  El primero  situado  en la


primera fila y tercera columna y  el segundo situado en la segunda fila y tercera columna.

Para acceder a una fila completa, se indica el número de fila y no se indica ninguna columna.

> mat1[1,]
[1] 1 3 5

Del mismo modo se puede acceder a columnas completas

> mat1[, c(1,2)]


[,1] [,2]
[1,]    1    3
[2,]    2    4

Al igual que en el caso de los arrays, para acceder a un elemento de un factor o de un factor
ordenado también se emplean los corchetes ([]), indicando la posición de dicho elemento.

>  fac[2]
[1] M
Levels: H M

>  ord[c(2, 5)]


[1] 2 3
Levels: 1 < 2 < 3

En los data frames se utiliza el símbolo $ seguido del nombre de la columna dentro del data frame.

>  dataframe$a
[1] 1 5 4

Recordemos que un data frame está formado por distintas columnas de igual longitud. Cada una
de estas columnas es en realidad un vector de manera que, una vez se ha especificado la
columna del data frame a la que se desea acceder (mediante el símbolo  $), es posible obtener
valores de la columna usando los corchetes. Así, por ejemplo, para obtener el primer valor dentro
de la columna de nombre a incluida en el data frame que se llama dataframe se tiene que escribir

> dataframe$a[1]
[1] 1

Alternativamente, un data frame puede verse como una matriz por tanto, también pueden usarse
los corchetes ([]) para acceder a sus elementos.

> dataframe[1,]
a    b    c
1 1 hola TRUE
Para acceder a un elemento dentro de una lista, se emplean los corchetes dobles ([[]]) y se indica
dentro de ellos qué posición ocupa el elemento a acceder.

> list1[[2]]
[1] “hola”        “adiós”       “hasta luego”

> list2[[4]][2]
[1] 2

Ejemplos

> peso <-  c(19,14,15,17,20,23,30,19,25)


> peso < 20
> peso < 20 | peso > 25
> peso[peso < 20]
> peso[peso < 20 & peso != 15]
> trat <- c(rep(“A”, 3), rep(“B”, 3), rep(“C”, 3))
> peso[trat == “A”]
> peso[trat == “A” | trat == “B”]
> split(peso, trat)
> split(peso, trat)$A
> x  <-  1:15;  length(x)    # varias instrucciones en un mismo renglón separadas por ;
>  y <- matrix(5, nrow = 3, ncol = 4); dim(y)
>  is.vector(x);  is.vector(y);  is.array(x)
>  x1  <- 1:5;  x2  <-  c(1, 2, 3, 4, 5);  x3  <-  “patata”
>  typeof(x1);  typeof(x2);  typeof(x3)
>  mode(x);  mode(y);  z <- c(TRUE, FALSE);  mode(z)
>  attributes(y)
>  w <- list(a = 1:3, b = 5);  attributes(w)
>  y <-  as.data.frame(y);  attributes(y)

Ejemplos: Generación de secuencias

>  x  <-   c(1, 2, 3, 4, 5)


>  x  <-  1 : 10 ;   y  <-   -5 : 3
> 1 : 4 + 1;   1 : (4 + 1)
>  x  <-  seq(from = 2,   to = 18,   by = 2)    # la function seq genera una secuencia
>  x <-  seq(from = 2,  to = 18,  length = 30)
>  y <-  seq(along = x)
>  z <-  c(1 : 5,  7:10,  seq(from=-7,  to=5,  by=2))
> rep(1, 5)   #repite el 1 cinco veces
> x  <-  1:3;  rep(x,  2)
> y  <-  rep(5,  3);  rep(x,  y)
> rep(1 : 3,  rep(5,  3))
> rep(x,  x)
> rep(x,  length = 8)
> gl(3, 5) # es equivalente a rep(1:3, rep(5, 3))
> gl(4, 1, length = 20) #  gl genera factores
> gl(3, 4,  label = c(“Rubio”, “Moreno”, “Pelirrojo”))

Nota: Para generar secuencias también podemos usar las funciones seq y rep

Ejemplos: Selección de los elementos de un vector

> x  <-  1:7;  x[1];  x[3];  x[c(2,6)]  # el ; separa instrucciones


> x[x > 4]
>x>4
> y <- x > 4
> x[y]
> x[-c(1, 5)];  y  <-  c(1, 2, 6);  x[y]
> names(x) <- c(“a”, “b”, “c”, “d”, ”e”, “manzana”)   # Cuidado con las dobles las comillas  (tecla del
2)
> x[c(“a”, “e”, “manzana”)]

Ejemplos. Ordenación de vectores

>  x <-  c(7, 4, 5, 9, 1)


>  order(x)
>  sort(x)
>  rev(x)
>  rank(x)
>  x[order(x)]
>  y  <-  c(1, 5, 5, 5, 7, 7, 9, 9, 9, 9);  rank(x,  y)
>  min(x);   which.min(x);   which(x == min(x))
>  y <-  c(1, 1, 2, 2, 3);  order(y,  x)

Ejemplos de vectores de caracteres

> paste1 <- paste(c(“I”, “J”, “M”), 3:5, sep = “”)


> paste2 <- paste(c(“I”, “J”, “M”), 3:5, sep = “.”)
> unir1 <- paste(c(“el”, “sol”, “brilla”), collapse =” “)
> unir2 <- paste(c(“el”, “sol”, “brilla”), collapse =”-“)
> unir3 <- paste(c(“el”, “sol”, “brilla”))
> letras  <-  LETTERS[1:9];   números  <-  7:15
> unir4  <- paste(letras,  números,  sep =””)
> substr(“abcdef”, 2, 4)
> x  <-  paste(LETTERS[1:7],  collapse = “”)
> substr(x, 3, 7)  <-  c(“xyz”)
> x  <-  c(60, 90, 903);  y  <-  factor(x);  x ;  y
> as.numeric(as.character(y)) # convierte un vector factor en numérico
> factor1  <-  factor(c(“alto”, “bajo”, “medio”))
> factor2  <-  factor(c(“alto”, “bajo”, “medio”),  levels =  c(“bajo”, “medio”, “alto”))      # cambia el
orden de las etiquetas

Ejemplos de arrays y matrices

> a  <-  1:24;  dim(a)  <-  c(3,4,2)


>  arr1  <-  array(7,  dim =  c(4,5))
> mat1  <-  matrix(10:29,  nrow = 5)
> mat2 <- matrix(10:29,  nrow = 5,  byrow = TRUE)
> mat3 <-  10:29;  dim(mat3)  <-  c(5, 4)
> a[1,1,1];  a[1,1,2];  a[3,4,2]
> a[2, , ]      # es un array de dimensión c(4,2)
> a[,3 , ]      # es un array de dimensión c(3,2)
> mat3[1, ];  mat3[, 2];  mat3[c(1, 3),  c(2, 4)]
> mat4  <-  matrix(c(1, 3, 2, 4),  nrow = 2);  mat4
> mat3[mat4]     # coordenadas matricialmente
> m1 <- matrix(1: 4,  nr = 2, nc = 2)
> m2 <- matrix(6: 9,  nr = 2, nc = 2)
> rbind(m1, m2)      # rbind une matrices por filas
> cbind(m1, m2)      # cbind une matrices por columnas
> diag(m1)              # diagonal principal de la matriz

 Ejemplos de Data frames y listas

> x  <-  1:4;  n  <-  10;  M  <-  c(10, 35);  y  <-  2:5 ; x; n; M; y
> data.frame(x, n)
> data.frame(x, M)
> data.frame(x, y)
>  l1  <-  list(x, y);  l2  <-  list(A = x,  B = y) ; l1; l2
> names(l1)
> names(l2)

  Lectura de datos desde ficheros externos


Cuando se trabaja con  R  es posible introducir los datos tecleándolos directamente e ir
visualizándolos en la consola a medida que los escribimos. Sin embargo, no es la opción más
habitual, ya que la introducción manual de datos es una tarea tediosa, especialmente cuando se
tiene un gran volumen de información. En estos casos, lo más normal es disponer de un fichero de
datos que el programa se encarga de leer. R es capaz de leer ficheros con multitud de formatos:
Excel (con extensión .xls o .xlsx), SPSS (con extensión .sav),… Uno de los formatos más utilizado
para almacenar datos es el formato fichero de texto (con extensión  .txt). Los ficheros con
extensión .txt son muy ligeros y sencillos de utilizar. Para leer un fichero  .txt  en  R  se emplea la
función read.table

read.table(file, header = FALSE,…)

El primer argumento de la función, file, hace referencia a la ruta en la cual está el fichero a leer.
Este argumento, al ser una cadena de caracteres, ha de ir entre comillas dobles. Un detalle
importante a tener en cuenta es que en R la barra que se emplea para especificar una ruta es la
barra / en lugar de la barra \ habitual.

Por otra parte, el segundo argumento es un argumento lógico mediante el cual se indica si en el
fichero de texto que vamos a leer aparecen los nombres de las variables en la primera línea (en
ese caso,  header = TRUE) o no apacecen (entonces,  header = FALSE, que es la opción por
defecto).

Al emplear esta función,  read.table,  se obtiene un data frame con todas las observaciones de
todas las variables incluidas en el fichero de texto.

Ejercicios

Ejercicios Guiados
Ejercicio guiado1
En la siguiente tabla se recogen datos acerca de la raza, la edad, el peso y la altura de 10
personas:
Raza Edad P eso Altura

Blanca 24 58 156

N egra 26 62 175

Blanca 62 61 169

Blanca 31 67 171

N egra 30 71 159

N egra 41 69 160

N egra 51 68 158

Blanca 23 73 178

Blanca 28 56 168

Blanca 30 82 156

Tabla 1. Datos del Ejercicio Guiado 1

a) Elaborar un fichero de texto (con extensión .txt) que contenga la información de la tabla


anterior. Utilizar el tabulador para separar la información referente a cada variable.
Guárdalo en el escritorio y llámarlo mibasededatos.txt.

b) Desde R leer el fichero que se acaba de crear y almacenar su contenido en una variable


de nombre datos.

c) Obtener los valores para las 4 variables para el tercer y el séptimo individuo

d) Determinar la altura del noveno individuo

e) Comprobar si la edad del primer individuo es mayor que la edad del último individuo

f) Comprobar si el peso conjunto de los dos primeros individuos es menor que el peso
conjunto de los dos últimos

g) Calcular la raíz cuadrada de la altura del quinto individuo.

Ejercicio guiado2
La siguiente tabla incluye información acerca del sexo de seis estudiantes, sus
puntuaciones en la asignatura de Estadística y la opinión que tienen acerca de la
asignatura (Buena, Regular o Mala)

Sexo P untuación Opinión

Hombre 7.5 Buena

M ujer 8 Regular

M ujer 2 M ala

M ujer 6.5 M ala

M ujer 10 Regular

Hombre 9 Buena

Tabla 2. Datos del Ejercicio Guiado 2


Se pide:

a) Almacenar el contenido de la tabla en tres variables distintas (Sexo, Puntuación y


Opinión), seleccionando el tipo de variable adecuado en cada caso

b) Crear un  data frame  de nombre Estudiantes que contenga la información de las tres
variables creadas

c) La puntuación media de los hombres y de las mujeres

d) Los datos de las tres variables para el quinto individuo

e) El logaritmo neperiano de la puntuación del tercer individuo

f) Comprobar si la puntuación del segundo individuo o del cuarto individuo es superior a 7.

Ejercicio Guiado 1 (Resuelto)


En la siguiente tabla se recogen datos acerca de la raza, la edad, el peso y la altura de 10
personas:

Raza Edad P eso Altura

Blanca 24 58 156

N egra 26 62 175

Blanca 62 61 169

Blanca 31 67 171

N egra 30 71 159

N egra 41 69 160

N egra 51 68 158

Blanca 23 73 178

Blanca 28 56 168

Blanca 30 82 156

Tabla 1. Datos del Ejercicio Guiado 1

Se pide:

a) Elaborar un fichero de texto (con extensión .txt) que contenga la información de la tabla


anterior. Utilizar el tabulador para separar la información referente a cada variable.
Guárdalo en el escritorio y llámarlo mibasededatos.txt.

Creamos un fichero de texto que recoja la información que muestra la tabla y lo guardamos en el
escritorio con el nombre mibasededatos.txt. El fichero tendrá un aspecto parecido a éste
Figura 14. mibasededatos

b) Desde R leer el fichero que se acaba de crear y almacenar su contenido en una variable


de nombre datos.

Teniendo en cuenta que el fichero de datos contiene el nombre de las variables en la primera
línea, la orden que tenemos que emplear es

> datos <- read.table(“C:/Users/Usuario/Desktop/mibasededatos.txt”, header = TRUE)  # Cuidado


con las dobles las comillas  (tecla “)

Nota: La ruta hasta llegar al fichero varía en función del ordenador. Utilizar la siguiente orden para
situarse en el directorio de trabajo

> setwd(“C:/Users/Usuario/Desktop/nombrecarpeta”)

> datos <- read.table(“mibasededatos.txt”, header = TRUE)

Después de leer el fichero de datos, veamos qué aspecto tiene la variable datos

> datos

Raza Edad Peso Altura


1   Blanca   24   58    156


2   Negra   26   62    175

3  Blanca   62   61    169

4  Blanca   31   67    171

5   Negra   30   71    159

6   Negra   41   69    160

7   Negra   51   68    158

8  Blanca   23   73    178

9  Blanca   28   56    168

10 Blanca   30   82    166

c) Obtener los valores para las 4 variables para el tercer y el séptimo individuo

Vamos a leer de forma conjunta las filas 3 y 7 del data frame.

> datos[c(3,7),]
Raza Edad Peso
Altura
3 Blanca   62   61    169

7  Negra   51   68    158

d) Determinar la altura del noveno individuo


Tenemos dos formas de conocer la altura del individuo

> datos$Altura[9]
[1] 168

o bien

> datos[9,4]
[1] 168

e) Comprobar si la edad del primer individuo es mayor que la edad del último individuo

En este caso, tenemos que realizar una comparación simple

> datos$Edad[1] > datos$Edad[10]


[1] FALSE

f) Comprobar si el peso conjunto de los dos primeros individuos es menor que el peso
conjunto de los dos últimos

> datos$Peso[1] + datos$Peso[2] < datos$Peso[9] + datos$Peso[10]


[1] TRUE

g) Calcular la raíz cuadrada depropuesto 2

la altura del quinto individuo

> sqrt(datos$Altura[5])
[1] 12.60952

Ejercicio Guiado 2 (Resuelto)


La siguiente tabla incluye información acerca del sexo de seis estudiantes, sus
puntuaciones en la asignatura de Estadística y la opinión que tienen acerca de la
asignatura (Buena, Regular o Mala)

Sexo P untuación Opinión

Hombre 7.5 Buena

M ujer 8 Regular

M ujer 2 M ala

M ujer 6.5 M ala

M ujer 10 Regular

Hombre 9 Buena

Tabla 2. Datos del Ejercicio Guiado 2

Se pide:

a) Almacenar el contenido de la tabla en tres variables distintas (Sexo, Puntuación y


Opinión), seleccionando el tipo de variable adecuado en cada caso.

La variable Sexo es una variable cualitativa sin un orden específico entre sus categorías, de modo
que crearemos un factor no ordenado para almacenar la información de esta variable.
La variable Opinión es una variable cualitativa con un orden entre sus categorías (Mala < Regular
< Buena), por lo que crearemos un  factor ordenado  para almacenar la información de dicha
variable

La variable Puntuación almacena en un vector de números reales.

> sexo <- factor (c(“H”, “M”, “M”, “M”, “M”, “H”), levels = c(“H”, “M”))
> opinion <- ordered (c(“B”, “R”, “M”, “M”, “R”, “B”), levels = c(“M”, “R”, “B”))
> puntuacion <- c(7.5, 8, 2, 6.5, 10, 9)

>sexo
[1] H M MMM H
Levels: H M

>opinion
[1] B R M M R B
Levels: M < R < B

>puntuacion
[1]  7.5  8.0  2.0  6.5 10.0  9.0

Nota: No olvidar que en R el signo decimal viene dado por el punto (.) y no por la coma (,)

b) Crear un  data frame  de nombre Estudiantes que contenga la información de las tres
variables creadas

>estudiantes<- data.frame(sexo, puntuacion, opinion)


> estudiantes

sexo   puntuacion opinion


1    H                 7.5            B
2    M                8.0            R
3    M               2.0            M
4    M               6.5            M
5    M             10.0             R
6    H                9.0             B

c) La puntuación media de los hombres y de las mujeres.

Para calcular las puntuaciones medias de hombres y mujeres tendremos en cuenta que hay 2
hombres en el fichero de datos, ocupando las posiciones 1 y 6 y que hay 4 mujeres en el fichero
de datos, ocupando las posiciones 2, 3, 4 y 5.

>media_H<- (estudiantes$puntuacion[1] + estudiantes$puntuacion[6])/2


>media_M<- (estudiantes$puntuacion[2] + estudiantes$puntuacion[3]
+ + estudiantes$puntuacion[4] + estudiantes$puntuacion[5])/4

>media_H
[1] 8.25

>media_M
[1] 6.625

Resultando que la puntuación media de los hombres es mayor que la de las mujeres.

d) Los datos de las tres variables para el quinto individuo

>estudiantes[5,]
sexo puntuacionopinión
5    M         10       R
e) El logaritmo neperiano de la puntuación del tercer individuo

>log(estudiantes$puntuacion[3])
[1] 0.6931472

f) Comprobar si la puntuación del segundo individuo o del cuarto individuo es superior a 7

>estudiantes$puntuacion[2] > 7 | estudiantes$puntuacion[4] > 7


[1] TRUE

Ejercicios Propuestos
Ejercicio Propuesto 1
En la siguiente tabla se muestra la altura, en metros, de los pinos que componen 4 parcelas
de terreno.

P arcela 1 P arcela 2 P arcela 3 P arcela 4

7.5 12.5 11 12.5

12 10.5 8 16

14.5 13 7.5 9.5

9 9.5 10

18.5 19

14

Tabla 3. Datos del Ejercicio Propuesto 1

Se pide:

a) Crear 4 vectores numéricos, de manera que cada uno almacene la altura de los pinos de
una parcela

b) Agrupar los 4 vectores creados en el apartado anterior en una estructura de datos


adecuada, teniendo en cuenta sus características

c) Comprobar, para cada parcela, si la altura del primer pino supera a la del último pino

d) Calcular el logaritmo decimal de la altura del tercer pino de la parcela 3

e) Calcular la suma de las alturas de los 3 primeros pinos de la parcela 4

f) Obtener la altura media de los pinos de la parcela 1.

Ejercicio Propuesto 2

En la siguiente tabla se recoge información sobre el sexo, la tensión arterial y el pulso por
minuto de los pacientes atendidos en una clínica a lo largo de un día
Sexo T ensión arterial P ulso

Hombre 119 59

M ujer 99 89

Hombre 102 107

Hombre 78 76

M ujer 78 91

Tabla 4. Datos del Ejercicio Propuesto 2

a) Elaborar un fichero de texto (con extensión .txt) que contenga la información de la tabla


anterior. Utilizar el tabulador para separar la información referente a cada variable.
Guárdalo en el escritorio y llamarlo salud.txt

b) Desde R leer el fichero que se acaba de crear y almacenar su contenido en una variable


de nombre datos

c) Obtener los valores para las tres variables para el primer y el cuarto individuo

d) Comprobar si la primera mujer (posición 2) tiene una tensión arterial mayor que la
segunda mujer (posición 5)

e) Calcular la media del pulso de los hombres

f ) Obtener la raíz cuadrada de la tensión arterial del cuarto individuo.

También podría gustarte