Análisis de Datos
Introducción a la Programación en R
Tomás de la Rosa
Universidad Carlos III de Madrid
Recursos Principales
I R
[Link]
I RStudio
[Link]
I Librerı́a Gráfica ggplot2
[Link]
I Tutoriales de interés
I Quick-R
[Link]
Utilidades del Entorno
Comando Descripción
setwd(’<nuevo-directorio>’) Cambiar directorio de trabajo
source(’<ruta-fichero>’) Cargar un fichero de cógido R.
library(<nombrePaquete> Cargar un paquete pre-instalado de R
help(<nombreFuncion>) Muestra la ayuda para una función
str(<objeto>) Describe la estructura de el objeto R
q() Salir
Tipos de Datos
I Básicos
I numeric, integer
I logical [TRUE, FALSE]
I character
I Contenedores
I vectores
I matrices
I listas
I factor: vector de valores nominales o categorias
I data frames
Operadores
I Aritméticos: +, −, ∗, /
I Relacionales: <, ≤, ==, ≥, >, ! =
I Lógicos: &, |, ∼
Variables y Asignación
I No hace falta declarar las variables. Se crean al asignarles
un valor inicial
I Operador de asignación es ’<-’. El ’=’ también funciona,
pero se utiliza menos por tradición.
> x <- 5
> x + 3
[1] 8
> y <- x + 1
Vectores
I Crear vectores concatenando elementos
x <- c(5.0, 7.3, 2.2)
I Crear vectores mediante sucesiones aritméticas
generadas con el operador ’:’
> 1:7
[1] 1 2 3 4 5 6 7
> 100:105
[1] 100 101 102 103 104 105
Vectores
I Crear vectores mediante la repetición de elementos.
Función rep
rep(0, 10)
[1] 0 0 0 0 0 0 0 0 0 0
Indexación de Vectores
I Para acceder a uno o varios elementos de un vector
I A partir de un vector de ı́ndices o un vector lógico (TRUE,
FALSE)
> x <- 10:20
> x[3]
[1] 12
> x[2:5]
[1] 11 12 13 14
> x[c(1,3,7)]
[1] 10 12 16
> x > 15
[1] FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE TRUE
> x[ x > 15 ]
[1] 16 17 18 19 20
Definición de Funciones
I Definir una función
nombreFuncion ← function(param1, param2){}
<sentencias>...
}
I Ejemplos
interesCompuesto <- function(capital, interes, periodos){
valor <- capital * (1 + interes)ˆperiodos
return(valor)
}
Control de Flujo - Condicionales
I Sentencia
if (exp logica){ <sentencias>} else { <sentencias>}
someNegative <- function(vec){
minVal <- min(vec)
if (minVal < 0){
return(TRUE)
}else{
return(FALSE)
}
}
Control de Flujo - Bucles
I Sentencia while(exp logica){<sentencias>}
I Sentencias for (<var> in <vector>){<sentencias>}
movingAverage <- function(prices, n){
ticks <- length(prices)
ma <- rep(NA_real_, times=ticks)
for (i in n:ticks){
slidewindow <- prices[(i - n + 1):i]
ma[i] <- mean(slidewindow)
}
return(ma)
}
Conversiones de Tipos
Función Descripción
[Link](var) Convertir la cadena var a fecha
[Link](var) Convertir el objeto var a una cadena de caracteres
[Link](var) Convertir el objeto var a tipo numérico
[Link](var) Convertir el objeto var a tipo entero
Data Frames
I Creación de dataframes mediante vectores columna
> cartera <- [Link](item=1:4,
activo=c("Google", "Amazon", "Santander", "Iberdrola"),
posicion=c(5,7,500,800))
> cartera
item activo posicion
1 1 Google 5
2 2 Amazon 7
3 3 Santander 500
4 4 Iberdrola 800
> str(cartera)
’[Link]’: 4 obs. of 3 variables:
$ item : int 1 2 3 4
$ activo : Factor w/ 4 levels "Amazon","Google",..: 2 1 4 3
$ posicion: num 5 7 500 800
Data Frames
I Acceder a los vectores individuales de un data frame
> cartera$activo
[1] Google Amazon Santander Iberdrola
I Data slicing para filtrar filas o columnas de un data frame
> cartera[cartera$posicion > 50, ]
item activo posicion
3 3 Santander 500
4 4 Iberdrola 800
> cartera[,c("item","posicion")]
item posicion
1 1 5
2 2 7
3 3 500
4 4 800
Funciones
Función Descripción
Matemáticas
sum(x), prod(x) Sumatorio o producto del vector x
Estadı́sticas
mean(x), var(x) Media y varianza del vector x
max(x), min(x) Máximo y Minimo del vector x
Cadenas de Caracteres
paste(str1, str2, ...) concatena strings
Vectores
c(x1, x2, ...) Crea un vector concatenando los elementos
rep(x, n) Crea un vector repitiendo x un total de n veces
length(x) longitud del vector x
Data Frames
nrow(df), ncol(df) Número de filas o columnas del data frame df
head(df,n), tail(df,n) Primeras o últimas n filas del data frame df
rbind(df, newrows) Para añadir las filas newrows al dataframe df
cbind(df, newcols) Para añadir las columnas newcols al data frame df