Sunteți pe pagina 1din 95

Introducción a R:

Una plataforma para estadística y


análisis de datos

Juan Emmanuel Martínez Ledesma, PhD.

Tecnológico de Monterrey
Campus Laguna
20 de Marzo del 2015
Nota Aclaratoria

• Se vale preguntar en cualquier momento.


• Por favor avísenme si algo no está claro o
quieren más tiempo para hacer el ejercicio.
• Vamos a ver algunos comandos de R, si
quieren hacer algo en específico, se puede
considerar.
Háblenme un poco de ustedes
¿Qué experiencia tienen en programación?
¿En estadística?

¿Cuáles lenguajes han utilizado?

¿Han gozado? ¿Han sufrido?


Información sobre R
Introducción – Historia
1993: Se realizó el primer anuncio sobre el lenguaje de
programación estadística R.
1995: R se empieza a considerar como software libre por GNU.
1997: Se forma el core group de R, el cual controla el código
fuente de R.
2000: Se libera la primer version de R 1.0.0.
2001: Bioconductor project started under supervision of the
Core Group.
2013: La version de R 3.0.2 es liberada en Diciembre.
Introducción – Características

• R funciona en prácticamente cualquier sistema operativo.


• El Core Team de R sigue en desarrollo
• La modularidad de los paquete de R le brinda buena
funcionalidad.
• Su capacidad para gráficas.
• La comunidad que rodea a R es muy activa, investigación e
industria.
• El usuario rápidamente se puede convertir en programador.
Introducción – Gráficas
Introducción – Usuarios
Introducción – ¿Por qué R?

• Es la principal herramienta usada por la comunidad científica


• No es un paquete, es un lenguaje de programación estadística.
• Se puede usar en cualquier sistema operativo, gratis.
• Se integra fácilmente (Excel, C, Python, Java).
• La comunidad de usuarios. + paquetes, + ayuda
Introducción - Comunidad
Introducción – ¿Por qué R?

http://www.econometricsbysimulation.com/2014/03/why-use-r-five-reasons.html
Introducción – ¿Por qué R?

http://www.econometricsbysimulation.com/2014/03/why-use-r-five-reasons.html
R– Consola
R– Consola
R– Documentación y Ayuda
Para obtener la documentación de las funciones de R desde la
consola
R– Documentación y Ayuda
La comunidad de usuarios también representa una gran ventaja
para obtener clarifiación en alguna duda.
Conferencia Use R!
En R encuentras lo que quieras
¿Qué les interesa buscar?
Instalar R
Instalar R

http://www.r-project.org
R– Consola
Tipos de Variables
R– Variables

Asignación de variables Operaciones básicas con


variables
R– Variables
Numérica Funciones

Carácter

Boolean
Operadores en R
• Son similares a los de otros lenguajes
y tienen el mismo orden de asignación.
Operator Description
+ addition
- subtraction
* multiplication
/ division
^ or ** exponentiation
x %% y modulus (x mod y) 5%%2 is 1
x %/% y integer division 5%/%2 is 2
Ejercicios con variables

a) ¿Qué diferencia hay entre 5/2 y 5%/%2?

a) Declara dos variables con valor booleano y luego


haz una multiplicación, suma, resta, división, etc.

a) ¿Qué diferencia hay entre 2+3*5 y (2+3)*5?

b) Asigna la función log10 a x y luego realiza la


operación x(10).
Ahora que conoces algo de R

¿Qué diferencias ves respecto a otros


lenguajes que hayas usado?

¿Existen similitudes?
R es simple
• En R no necesitas declarar el tipo de
variable. Sin embargo puedes asignarlo.
Ejemplo: as.character()
• No es necesario especificar si una
variable númerica tiene que ser entera o
double.
• No tienes que crear una función “main”
• No tienes que compilar.
• Puedes asignar funciones a variables.
Estructuras de Datos
R– Vectores
Numérico

Carácter
Booleanos
R– Vectores (funciones)
Vectores secuenciales

Vectores repetitivos
R– Indexado de vectores
• Se hace con corchetes [ ]
• Es igual que con otros lenguajes pero
en R se empieza en 1.
• Puede ser una operación.
• Negativo significa quitar del vector.
R– Indexado de vectores
R– Matrices
Llenar datos
datos: puede ser un valor por renglón Lista con los nombres de
o un vector de valores columnas y renglones

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

# de renglones # de columnas
R– Matrices

http://www.r-tutor.com/r-introduction/matrix
R– Arrays
Pueden definirse como un vector de matrices, agregando una dimensión
extra a las matrices.
Lista con los nombres de
datos: puede un valor o un columnas, renglones, etc.
vector de valores

array(data = NA, dim = length(data), dimnames = NULL)

# de dimensiones
R– Arrays
Un arreglo puede definirse como un objeto tridimensional
(r x c x h).
Puedes pensar que son h matrices de dimensiones r x c.

h
r
c
R– Data frames
Son vectores del mismo tamaño
group <- data.frame(name =
c("Hans”,"Caro”,"Lars”,"Ines”,"Sarah"), gender = c("male",
"female", "male", "female”, "female”),
favourite_colour = c("green", "blue", "yellow”, "black",
"yellow”),
income = c(800,1233,2400,4000,2899))
R– Data frames
• Es un objeto de dimensiones r x c (similar a una
matriz).

• Cada columna debe tener la misma cantidad


de elementos, pero el tipo de dato puede ser
diferente.

• Son usados por otras funciones para agilizar el


código.

• La función as.data.frame() convierte una matriz


a dataframe. La función data.matrix() hace el
proceso contrario.
R– Listas

Colecciones arbitrarias (distintos tipos y tamaños) de objetos

L <- list(c(1,5,3), matrix(1:6, nrow=3), c("Hello", "world”))

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


R– Listas
Las listas puede tener:
a. Vector
b. Matriz
c. Array
d. Dataframe
e. Lista
R– Listas
R– Estructuras de Datos
R– Estructuras de Datos
R– Tablas
Útiles para almacenar información o proveer un resumen
de los datos.
Ejercicios con estructuras

a) Crea una matriz 3x3, usando 3 vectores y ponle


nombres de columna y renglón

a) Haz lo mismo para ahora para una matriz 4x4.

b) Convierte la matriz de “b” a dataframe

c) Mete todos estos elementos a una lista e


imprímelos en la consola.
Ahora que conoces algo más de R

¿Qué estructuras de datos son similares


a las de otros lenguajes?

¿Cuáles son diferentes?

¿Te parecen fáciles de manejar? ¿Por


qué?
Gráficas en R
R– Graficas básicas en R
• Función plot Nota: se puede
Título de la gráfica especificar sólo un
Datos en X Datos en Y
Etiqueta eje “x”
grupo de datos

plot(x, y, type, main, sub, xlab, ylab, …)

Tipo de gráfico Etiqueta eje “y”


Subtítulo de la gráfica
para cada punto

A)

B)
R– Opciones básicas en gráficas
A) Titulo B) Titulo

25
25

20
20

15
15

Eje Y
Eje Y

10
10

5
5

0 20 40 60 80 100 120 0 10 20 30 40 50

Eje X Index
Subtitulo
R– Opciones básicas en gráficas
Con el parámetro “type”, podemos elegir si queremos líneas, puntos o ambas

x <- c(1:20)^2

plot(x, type="p") plot(x, type=“l") plot(x, type=“b")

2500
2500

2500

2000
2000

2000
1500

1500
1500
x

x
1000

1000

1000
500

500

500
0

0
0 10 20 30 40 50 0 10 20 30 40 50
0 10 20 30 40 50
Index Index Index
R– Opciones básicas en gráficas
Con el parámetro pch, podemos elegir el tipo de punto con el que queremos graficar.

Ejemplo: graficar puntos del 1 al 25 con distintos tipos


plot(1:25, type="p", pch=1:25)
25
20
15
1:25

10
5

5 10 15 20 25

Index
R– Opciones básicas en gráficas
También podemos especificar el color. plot(1:25, col=1:25, pch=19)

25
20
15
1:25
25

10
20

5
15
1:25

5 10 15 20 25
10

Index

plot(1:5, col=c("black","red","green","orange","blue"), pch=19)


5

5
4

5 10 15 20 25

Index
1:5

3
2
1

1 2 3 4 5

Index
R– Opciones básicas en gráficas
Ejemplo:
samples <- c(1:25)
x <- samples
y <- samples^2 *0.1
z <- sqrt(samples)+10
plot(x, type="p", pch=7, col="green", ylim=c(0,65))
points(y, pch=15, col="red")
points(z, pch=19, col="black")
60
50
40
x

30
20
10
0

5 10 15 20 25
R– Opciones básicas en gráficas
Ejemplo:
samples <- c(1:25) y=x
y = x^2 * 0.1
x <- samples

60
y = sqrt(x) + 10
y <- samples^2 *0.1
z <- sqrt(samples)+10

50
plot(x, type="p", pch=7, col="green", ylim=c(0,65))
points(y, pch=15, col="red")
points(z, pch=19, col="black")

40
x

30
20
10
0

5 10 15 20 25
Agregar una leyenda
Index

legend("topleft", legend=c("y = x", "y = x^2 * 0.1", "y = sqrt(x) + 10"), fill=c("green","red","black"))
R– Gráficos básicos
x <- 1:100
y <- x + rnorm(100,0,5)
plot(x, y, xlab="x", ylab="x plus noise", main="Two variables")
Two variables

100
80
60
x plus noise

40
20
0

0 20 40 60 80 100

x
R– Gráficos básicos
plot(sin, from=-2*pi, to=2*pi, ylab="Funciones")
plot(cos, from=-2*pi, to=2*pi, add=TRUE, lty="dashed")
1.0
0.5
Funciones

0.0
-0.5
-1.0

-6 -4 -2 0 2 4 6

x
R– Gráficos básicos
lo.vec <- rnorm(20,0,1)
me.vec <- rnorm(20,3,1)
hi.vec <- rnorm(20,5,1)
boxplot(x=list(lo.vec, me.vec, hi.vec),names=c("low","med","high"))
6
4
2
0
-2

low med high


R– Gráficos básicos

slices <- c(10, 12, 4, 16, 8)


lbls <- c("US", "UK", "Australia",
"Mexico", "France")
pct <- round(slices/sum(slices)*100)
lbls <- paste(lbls, pct)
lbls <- paste(lbls,"%",sep="")
pie(slices,labels = lbls,
col=rainbow(length(lbls)),
main="Estudiantes que quieren
aprender R")
R– Gráficos básicos
elements <- c(rep("blue",3), rep("green", 6), rep("red",10))
elements.table <- table(elements)
barplot(elements.table, col=names(elements.table))
barplot(elements.table, col=names(elements.table),
main="Color Distribution", xlab="Colors")
R– Gráficos básicos
y <- rnorm(n=10) y <- rnorm(n=20) y <- rnorm(n=50)
hist(y) hist(y) hist(y)

y <- rnorm(n=100) y <- rnorm(n=500) y <- rnorm(n=1000)


hist(y) hist(y) hist(y)
R– Gráficos básicos
par(mfrow=c(2,2)) plot(wt,mpg, main="Scatterplot of wt par(mfrow=c(3,1)) attach(mtcars)
vs. mpg") plot(wt,disp, main="Scatterplot of wt vs hist(wt) hist(mpg) hist(disp)
disp") hist(wt, main="Histogram of wt") boxplot(wt,
main="Boxplot of wt")
R– Gráficos básicos
layout(matrix(c(1,1,2,3), 2, 2, byrow =
TRUE)) hist(wt) hist(mpg) hist(disp)
Ejercicios con graficas

a) Crea una gráfica para 3 funciones matemáticas


diferentes y cada una muéstrala con un color
diferente.

b) Crea 3 histogramas usando “rnorm” con 10


puntos y luego otros 3 usando 1000 puntos. Todos
grafícalos juntos. ¿Qué diferencias ves?
Ahora que conoces algo más de R

¿Con qué otros lenguajes has hecho


gráficas de datos?

¿Fue fácil?

¿Te gustaron las gráficas que se hacen


con R? ¿Por qué?
Funciones en R
R– Funciones
Paquetes Colección de funciones, ayuda, datos…

Función 1
Función 2
Función…

Valor que se dá a la
Input funcion
Manipula objetos
Funciones Argumento Los objetos que regresa la
Regresa un valor
funcion depende de estos

Representaciones que
Es usado como pueden ser manipulados.
Valor Objeto
argunmento Asignación
R– Selección y manipulación
sample(x, size): regresa size elementos de x

which.max: regresa el índice del elemento mayor.


Lo mismo ocurre con min.

sort(x): regresa los valores del vector x ordenados

order(x): regresa los índices del vector x ordenados

unique(x): regresa los valores de x sin repetir


R– Selección y manipulación

¿Qué diferencia hay entre rbind y cbind?


R– Información de variables
is.na(x), is.null(x), is.array(x), is.data.frame(x), is.numeric(x), is.character(x)

Sirven para saber si una variable es de cierto tipo.

length(x): tamaño del vector x

dim(x): regresa las dimensiones de la matriz x

nrow(x): regresa el número de renglones; ncol(x) para


columnas.

class(x): regresa la clase del objeto x


R– Argumentos condicionales

Se recomienda usar {}

ifelse se usa para asignar valores a


variables en base a una condición
R– Iteraciones

Tres formas distintas dellamar


al comando “for”
R– Iteraciones

Iteraciones con while Iteraciones con repeat

¿Qué diferencia hay


entre el while y repeat?
R– strings
R– strings
R– math
R– apply, sapply, lapply

¿Qué hace la función apply?


¿Qué diferencia hay entre poner un 1 y un 2?

¿Qué hace lapply?

¿Qué hace sapply?

¿Por qué las 3 maneras resultan en


algo similar?
R– Funciones
Descargar:
http://cran.r-project.org/doc/contrib/Baggott-refcard-v2.pdf
http://cran.r-project.org/doc/contrib/Short-refcard.pdf
Buscar en google R short refcard
R– Genera tu propia función

No es necesario un “return”
Ejercicios con funciones

a) Crea una función para algo que necesites en


alguna materia que estés cursando

b) Crea una función que regrese un data.frame


Ahora que conoces algo más de R

¿Qué te pareció la variedad de funciones


en R?

¿Fue fácil llamar las funciones en R?

¿En qué se parece R a otros lenguajes


en cuanto a crear funciones o llamar
funciones?
Leer / Exportar Datos en R
R– Leer datos
R– Leer datos como Excel
R– Leer datos como Excel
Caracter para
separar datos Variable para indicar si el
Archivo de datos
archivo tiene nombre de
columnas

datos <- read.delim(file="pruebaR_excel.txt", sep="\t", header=TRUE, stringsAsFactors=FALSE)

Variable para indicar si el


texto se lee como factor
R– Exportar datos

write.table(mtcars, sep="\t", quote=FALSE, file="mtcars.txt")


R– Exportar datos
A) B)

C) D)
Ejercicios con leer / exportar

a) Crea un archivo en excel con algunas variables.


Grábalo como un archivo txt separado por tab.

a) Impórtalo en R.

b) Adjunta una variable al dataframe.

c) Expórtalo como txt.

d) Abre el archivo en excel.


Ahora que conoces mucho de R

¿Te parece fácil el manejo de archivos en


R?

¿Para qué puedes utilizar las funciones


de exportar e importar?

¿Cómo se hace con otros lenguajes?


Bonus
Bioconductor
(Bioinformática)
R– Bioconductor

• Proyecto de código y desarrollo abierto


• Paquetes de R para análisis de datos genómicos y
biomédicos.
• Desarrolladores de todo el mundo (confiable): 749
paquetes
• Facilita la integración de metadatos (GenBank,
GO, Entrez, PubMed)
R– Bioconductor

http://www.bioconductor.org/
R– Bioconductor

library(org.Hs.eg.db)
gene.name <- toTable(org.Hs.egGENENAME)
symbol <- toTable(org.Hs.egSYMBOL)
R– Bioconductor
tumor.key <- as.numeric(sapply(gene.name$gene_name, function(x) grep("tumor",x)))

grep : se usa para encontrar patrones de texto.

cbind(gene.name[which(tumor.key == 1)[1:10],], symbol[which(tumor.key == 1)[1:10],2])


Ahora que conoces mucho de R

¿Te pareció interesante conocer más


sobre R?

¿Tienes preguntas?

Gracias!!!!!

S-ar putea să vă placă și