Introducción al software estadístico R

Profesores: Carlos Pérez González

Curso 2016/17

Bienvenidos a R

Contenidos

  1. Introducción al entorno R: instalación y uso básico. Librerías.
  2. Conceptos básicos del lenguaje R: instrucciones sencillas, scripts y funciones sencillas.
  3. Librería RCommander y técnicas de análisis estadístico (I).
  4. Librería RCommander y técnicas de análisis estadístico (II).
  5. Gráficos en R: el comando plot() y librerías específicas. Introducción a la interfaz Rstudio.





1. Introducción al entorno R: instalación y uso básico. Librerías.

¿Qué es R (y qué es lo que no es)? (I)

¿Qué es R (y qué es lo que no es)? (y II)

¿En qué me puede ayudar?

¿Por donde empezamos? R Base y librerías o paquetes. Rstudio

Ya tengo esto instalado….





2. Conceptos básicos del lenguaje R: instrucciones sencillas, scripts y funciones sencillas.

La consola de R. Operaciones elementales

# operaciones básicas
7+3
7*3
7/3
7%%3
7/0

La consola de R. Operaciones elementales (II)

x <- 3
x <- "ahora x es una cadena."
x
x <- c(3,4,5,6,7,8)  # c() combina valores en un vector. 
x
x
x[3:6] # elementos 3,4,5,6
x[c(1,3,6)] # elts 1,3 y 6
x[-c(1,3,6)] # todos elts excepto 1,3 y 6

Ejercicio 1

Vectores

x <- c(1:3)
x+1     #suma 1 a cada elemento del vector
x/2     #divide por 2 cada elemento del vector
length(x) # número de elementos del vector
max(x)
min(x)
sum(x)  #suma todos los elementos del vector
log(x)  #aplica la función log() a cada elemento del vector
?sum
?mean

Vectores (II)

x <- c(1:3)
y <- 4:6 # también se pueden generar secuencias numéricas sin usar c()
x + y

x <- 1:4
x + y  # R da un warning si se suman de diferente longitud

x <- 1:3
y <- 4:6
x * y  # producto elemento a elemento

Matrices

m1 <- matrix(data=1:9,nrow=3,ncol=3,byrow=TRUE)
m1

m1[1,2]
m1[,2]
m1[1,]
m1[c(1,3)]
dim(m1)
m1[1,2]
m1[2, ]   # fila 2, todas columnas
m1[ ,1]   # todas las filas, columna 1
m1[c(1,3),c(2,3)] # filas 1,3 y columnas 2,3
m1+m1
m1*m1 # de nuevo, producto elemento a elemento

Otras operaciones de interés con vectores y matrices

m2 <- matrix(data=1:12,nrow=4,ncol=3,byrow=FALSE)
m1 + m2  # error
m1 * m2  # error
x%*%y

m2 %*% m1
m1 %*% t(m2)
m1 %*% m2
m3 <- matrix(c(1,2,3,4),nrow=2,ncol=2,byrow=TRUE)
det(m3) #determinante
solve(m3) #inversa

Ejercicio 2

Operaciones lógicas (comparaciones)

x<-1
y<-3
x==y # comparar variables
x<y 
x>y 

x<-c(1,2,3,4)
y<-c(1,3,2,4)
x==y # comparar vectores
x<y
x>y
x[x>y]  # elementos de x que son mayores que los corresp. de y
y[x>y]  # elementos de y que son menores que los corresp. de x

Ejercicio 3

Estructuras de datos. La instrucción data.frame()

datos <- data.frame(aula=rep(1:3,each=2),sexo=rep(1:2,3),horas=rnorm(6,8,2))
dim(datos)  # hay 6 observaciones y 3 variables
datos 
datos[1,]  # observación 1
datos[,2]  # variable 2
datos[1:3,1:2] # ?

Estructuras de datos. La instrucción data.frame() (II)

datos[,"sexo"] 
datos[,c("aula","sexo")]

aunque la más habitual es con el operador $:

datos$sexo      # la columna sexo (como vector de valores)
datos$sexo[1:3] # los 3 primeros elementos de sexo
datos$sexo[c(1,4,6)] # ?
x<-datos$sexo + datos$horas
datos$dias<- datos$horas/24

Filtrar conjuntos de registros en un data.frame

datos_filt1<-subset(datos,aula==2)  # filas del aula 2
datos_filt1
# Otra forma:
cond<-datos$aula==2
datos_filt1<-datos[cond,] # filas del aula 2
datos_filt1

datos_filt2<-subset(datos,sexo==1)  # filas del sexo 1
datos_filt2
# Otra forma:
cond<-datos$sexo==1
datos_filt2<-datos[cond,] # filas del sexo 1
datos_filt2

Filtrar conjuntos de registros en un data.frame

datos_filt3<-subset(datos,aula==1 & sexo==2) # filas con aula=1 y sexo=2
# Otra forma:
cond<-(datos$aula==1 & datos$sexo==2)
datos_filt3<-datos[cond,] # filas con aula=1 y sexo=2


datos_filt4<-subset(datos,aula==1 | sexo==2) # filas con aula=1 o sexo=2
# Otra forma:
cond<-(datos$aula==1 | datos$sexo==2)
datos_filt4<-datos[cond,] # filas con aula=1 o sexo=2
datos_filt4

Ejercicio 4

mascotas <- data.frame(
animal=rep(c("gato","perro","mono"),each=2),
sexo=rep(c("M","H"),3),
peso=rnorm(6,15,5)
)

Resúmenes por filas y columnas

colSums(datos)
rowSums(datos) #sólo funciona si todas las variables son numéricas
by(datos[,"horas"],datos[,"aula"],sum) # suma las horas para cada aula
by(datos[,3],datos[,1],sum) # cuidado con esta forma que puede dar lugar a errores
aggregate(horas~aula,sum,data=datos) # utilizando una fórmula

Ejercicio 5