Curso:
Manejo de bases de datos en R
Conceptos introductorios
M.I. Alejandra Vázquez de los Monteros
M.I. Ann Wellens
Dr. Wulfrano Gómez Gallardo
Enero 2020
CONTENIDO
1. ¿Qué es R?
2. Ventajas y desventajas de R
3. Instalación de R y R Studio
4. Tutoriales y apoyos en Internet
5. Comandos en R (primeros pasos)
6. Uso de R como calculadora
7. Objetos en R
8. Funciones
9. Tipos y estructura de datos
9.1. Vectores
9.2. Factores
9.3. Matrices
9.4. Arreglos
9.5. Data frames
9.6. Listas
1
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
1. ¿Qué es R?
• R es un entorno y un lenguaje de programación orientado al cálculo
estadístico y generación de gráficos.
• Este software provee un acceso relativamente sencillo a una amplia
variedad de técnicas estadísticas y gráficas.
• Se caracteriza por ser un software libre, lo que significa que no
tiene costo en su descarga, uso y distribución e incluso
modificación.
• R es uno de los lenguajes de programación más importantes hoy en
día, cuya competencia podría considerarse Excel, Phyton, SPSS y
STATA.
• Se parece a Matlab y su sintaxis recuerda a C / C++
• R fue desarrollado inicialmente por Ross Ihaka y Robert Gentleman
en 1995 dentro de la Universidad de Auckland, Nueva Zelanda, y
actualmente se encuentra en desarrollo constante por el R
Development Core Team.
• Sin embargo, la versión beta más estable fue lanzada sino hasta el
año 2000.
2. Ventajas y desventajas de R
• Es un software libre
• No hay responsabilidad en caso de errores en el código.
• Es uno de los primeros lenguajes en recibir los nuevos temas.
• Es muy posible que tenga que ser corregidos con el paso del
tiempo.
• Es un lenguaje que facilita la iteración y la implementación de
rutinas. Cuesta trabajo aprender dichas sentencias o rutinas.
• Tiene fácil conectividad compatibilidad con otros lenguajes de
programación.
• No tiene límite (teórico) en la lectura de bases de datos.
• Suele volverse más lento el análisis con grandes bases de datos.
2
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
3. Instalación de R
• Primero ver las características del sistema operativo
• Depende del sistema operativo, pero todo se puede encontrar en
https://www.r-project.org/
3
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
• Después de elegir el idioma, aceptar los términos
• Al finalizar la instalación buscar la carpeta
4
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
• Se puede iniciar desde la carpeta de aplicaciones
• Para facilitar el proceso de información y librerías es
conveniente utilizar RStudio cuya interacción es más amigable.
• R Studio es un ambiente de desarrollo integrado (Integrated
Development Environment) que con ayuda de una consola, un
editor de código intuitivo, herramientas especiales de edición,
visor de gráficos, entre otros; permite programar en R de una
manera fácil y más cómoda.
• Se descarga en https://www.rstudio.com/
5
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
• En el escritorio se verán los dos íconos, se accede con RStudio.
6
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
4. Tutoriales y apoyos en Internet
• Manual de referencia https://cran.r-project.org/doc/manuals/r-release/R-
intro.pdf
• https://www.statmethods.net/index.html
• https://www.coursera.org/https://rpubs.com/
5. Primeros comandos en R (se pueden copiar tal cual dentro de R en un nuevo
script y ejecutar con “Run”)
(Ojo: R es sensible a mayúsculas y minúsculas)
#Licencia de R
license()
#Contribuyentes
contributors()
#Cita
citation()
#Ayuda
help()
help.start()
?
#Ejemplos rápidos
demo()
demo(graphics.off())
demo(persp())
demo(lm.glm)
#Salir del programa
q()
#Lista de objetos
ls()
#Eliminar objetos específicos
rm()
7
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
6. Uso de R como calculadora
#Suma
5+5
#Resta
8-3
#Multiplicación
6*5
#Divisiones
7/5
#Módulo
8%%2
#Parte entera de la división
6%/%3
#Exponentes
4^5
#Menor que
6<9
7<2
#Mayor que
7>5
10>1
#Menor o igual que
5<=7
5<=5
5<=1
#Igual
10==11
#Diferente
2!=3
8
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
#Raíz cuadrada
sqrt(144)
#Signo
sign(1)
sign(0)
sign(-1)
sign(-10)
sign(10)
#Valor absoluto
abs(1)
abs(-1)
#Redondear hacia abajo
floor(1.4)
floor(1.9)
#Redondear hacia arriba
ceiling(1.4)
ceiling(1.9)
#Truncar
trunc(1.8564)
#Redondear
round(1.8564,3)
#Significancia
signif(1.574309463,4)
#Logaritmo natural
log(exp(1))
#Logaritmo base 10
log10(10)
#Logaritmo base 2
log2(2)
9
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
#Logaritmo base 1.71828
log1p(1.718282)
#Logaritmo genérico, cualquier base
log(3,3)
#Exponencial
exp(2)
#Factorial
factorial(5)
#Valor de pi
pi
#Seno
sin(2*pi)
sinpi(2)
#Coseno
cos(2*pi)
cospi(2)
#Tangente
tan(2*pi)
tanpi(2)
#Arcocoseno
acos(1)
#Arcoseno
asin(0)
#Arcotangente
atan(1)
#Funciones hiperbólicas
sinh(1)
cosh(1)
tanh(1)
acosh(2)
10
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
asinh(2)
atanh(2)
atanh(1)
atanh(1/2)
#Convertir ángulos a radianes y calcular el seno
sin(c(0, 30, 45, 60, 90)*pi/180)
#Complejos
5+3i
1i*1i
Re(1+3i)
Re(2i)
Im(3+1i)
Im(2)
Mod(1i)
Mod(1+1i)
Mod(7)
Arg(3i)
Arg(3)
Arg(2+7i)
Conj(1i)
Conj(4)
Conj(4+8i)
7. Objetos en R
#Objeto simple numérico
a<-1
b=4
#Objeto simple texto
#Siempre debe ir entre comillas los archivos de tipo texto
c1<-Hola #error
c< -"Hola"
d="Mundo"
#Objeto lógico
e<-TRUE
f=F
11
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
8. Funciones (llevan “=” a)
#Función desde:hasta
7:35
a=7:35
#Función secuencia
seq(from=7, to=38, by=3)
c=seq(from=12, to=50)
c=seq(from=100, to=10, by=-10)
d=seq(from=1, to=10, by=0.1)
9. Tipos y estructura de datos en r
9.1. Vectores
#La estructura de datos más simple es el vector, que es una colección ordenada de
números o cadenas de texto
v1 <- c(10.4, 5.6, 3.1, 6.4, 21.7)
v1
v2<- c("perro", "gato","pez", "hamster")
v2
#Double (numérico decimal)
x1<- c(1.2)
# Convertirlo a entero
x1b <- as.integer(x1)
x1b
# Entero
x2<- c(2L)
#Character
x3<-c("Futbol Pumas")
#Lógico
my_logical <- TRUE
x1;x2;x3;my_logical
typeof(x1); typeof(x2); typeof(x3) #Obtiene el tipo de datos
12
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
class(x1); class(x2); class(x3) #Obtiene el tipo de datos
#Para verificar el tipo de objeto
is.numeric("42")
is.numeric(13)
is.integer(1.78)
is.logical(30<0)
is.logical(F)
is.character(4)
is.character("¿Qué tal?")
is.na(7/2)
is.na(7/0)
#También se puede transformar el tipo del objeto
as.character(12)
as.numeric("34")
as.logical(1)
d1=c(12,"a",F)
as.numeric(d1)
rep(c(T,F),12)
#Vector numérico
x<-c(1,2,3,4)
#Vector de texto
y<-c("R","S","T","W")
#Vector lógico
z<-c(T,F,F,T)
#Se crean dos vectores
x<-c(1,2,3)
y<-c(4,5,6)
#Combinación de dos vectores
z<-c(x,y)
#Error
z[1,3,5]
#Devuelve los elementos del vector colocados en las entradas dadas (por ejemplo
13
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
1,3,5)
z[c(1,3,5)]
z=z*6
#Para obtener las entradas del vector correspondiente
z[c(1,3,5)]
#Datos condicionados de un vector
z[z>10]
z[z<15]
#Error: no acepta intervalos declarados de esta manera
z[18>z>1]
#Pero si de esta forma
z[z>1&z<18]
z[z>1|z<18]
#Actualiza el vector completo
z=z/6
#Regresa solo los elementos de x o y
z[x]
z[y]
9.2. Factores
estado <- factor(c("Aguascalientes", "Zacatecas", "Puebla", "Morelos", "Durango",
"Jalisco", "Chihuahua", "Tlaxcala", "Tabasco", "Yucatan", "Zacatecas", "Puebla",
"Morelos", "Durango", "Jalisco", "Chihuahua", "Tlaxcala", "Colima",
("Aguascalientes", "Zacatecas", "Puebla", "Morelos", "Durango", "Jalisco",
"Chihuahua"))
estado
typeof(estado)
Unclass(estado)
9.3. Matrices
matriz1<- matrix(data=seq(1,9),nrow=4,ncol= 3,byrow=TRUE)
#Matriz vertical (Mnx1)
M1=matrix(1:6)
14
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
M1
#Matriz General (Mn x m)
M2=matrix(1:6,nrow=2)
M2
M3=matrix(1:6,nrow=2,byrow=TRUE)
M3
M=matrix(1:6,nrow=3)
M
#Numero de datos en una matriz
length(M)
#Tipo de matriz
mode(M)
#Dimensión
dim(M)
#Buscar el nombre o etiqueta de nuestras columnas y renglones rownames(M)<-
c("Hugo","Paco","Luis")
colnames(M)<-c("Edad","Estatura")
dimnames(M)<-list(c("Hugo","Paco","Luis"),c("Edad","Estatura")) y1=1:24
x1=matrix(1:24,nrow=1,byrow=T)
y1[1]
x1[1,1]
#Concatenación de columnas
cbind(M3,c(1,4))
#Concatenación por renglón
rbind(M,c(7,8))
#Transponer
t(M1)
#Producto matricial
MC<- 1%*%t(M1)
#Inversa
solve(matrix(1:4,nrow=2))
15
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
#Solución de un sistema de ecuaciones
solve(matrix(1:4,nrow=2),c(1,-1))
#Matrix diagonal
diag(1:4)
#Determinante
det(diag(1:4))
#Creacion de una matriz
matriz1<- matrix(data=seq(1,9),nrow=4,ncol= 3,byrow=TRUE)
#Referencia a un dato de la matriz
matriz1[,1]
#Muestra el renglón 1
matriz1[1,] #muestra la columna 1
matriz1[1:2, 2:3] #muestra las filas 1 y 2, con las columnas 2 y 3
#Ejemplo
datos<-matrix(c(20,65,174,22,70,180,19,68,170), nrow = 3, byrow=T) datos
dimnames(datos)<list(c("Hugo","Paco","Luis"),c("edad","peso","estatura"))
datos
#Regresa todos los elementos del renglon (obs) dado
#por nombre de sujeto
datos["Hugo",]
datos["Luis",]
#Extraer por numero de renglón
datos[1,]
#Extraer una columna
datos["paco",]
datos[2,"estatura"]
#Extracción de más de una variable u observación datos[,c("edad","estatura")]
datos[c("hugo","luis"),]
#Extraccion de los nombres de reglones y columnas
16
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
dimnames(datos)
colnames(datos)
rownames(datos)
9.4. Arreglos
#Array(datos,c(# de renglomes,# de columnas,# de matrices)) array(1:12,c(2,3,2))
array(1:12,c(4,3,1))
array(1:11,c(2,2,3))
#Matrices simultaneas
dat<-array(c(45,46,65,55,170,167,48,49,68,56,169,165),c(2,3,2))
dat
dimnames(dat)<-list(SEXO = c("hombres","mujeres"), c("edad","peso","estatura"),
c("CDMX","EdoMex "))
dat
#Extraccion de etiquetas
dimnames(dat)
#Extraccion de matrices
dat[,,"EdoMex"]
dat[,,"CDMX"]
#Extracción de columnas y renglones dat["hombres",,]
dat[,"peso",]
#Extraccion de más de una variable u observación dat[,c("edad","estatura"),]
9.5. Data frame
pers <- data.frame(tipo=c("gen0", "genB", "genZ"), subj1=c(10, 25, 33),
subj2=c(NA, 34, 15), oncogen=c(TRUE, TRUE, FALSE), loc=c(1, 30, 125))
#Una matriz se puede convertir a dataframe y asignarles nombre a las columnas
datos<-as.data.frame(matriz1)
datos
names(datos)<-c(“Santiago”, “Roberto”, “Mauricio”)
datos
#Acceder a la información de una columna
columna1<-datos$Santiago columna1
17
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
9.6. Listas
una.lista<-c(un.vector=1:10, una.palabra="hola", una.matriz=matrix(rnorm(20),
ncol=5))
una.lista
lista1<-c(b=factor(c("a", "b", "a"))) lista1
lista2<-c(a=5, b=factor(c("a", "b", "c"))) lista2
estado<-factor(c("Morelos", "Jalisco", "Hidalgo", "Jalisco", "Hidalgo")) estado
#Reemplazar o actualizar uno o varios elementos
x[1]=0
x x[c(1,3)]=9
#Valores faltantes
=c(1,5,9,NA,5,NA,0)
f
#Detecta los elementos vacios o faltantes del vector
is.na(f)
#Elimina los elementos vacios del vector
f<-f[!is.na(f)]
f
#Función de longitud de un vector
length(f)
#Mínimo
min(f)
#Máximo
max(f)
#Media o promedio
mean(f)
#Crea un vector de tipo carácter
v=c("a","d","g","h","a","x","V","a","d","g","h","a","x","V")
v length(v)
18
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
#Crear un vector para hacer análisis de sus elementos
v1=as.factor(v)
#Se extraen los elementos del vector sin repetir
levels(v1)
#Me dice cuantos elementos hay de cada elemento del vector summary(v1)
#Generar un vector numérico
estaturas<-c(1.7,1.5,1.9,2,1.45,1.7,1.5,1.9,2,1.45,1.68,1.6,1.45,1.72)
length(estaturas)
#Hace un analisis por clase, en este caso calcula la media tapply(estaturas, v1, mean)
#Ordenar vectores numericos #ordena en orden ascendente estaturas=sort(estaruras)
estaturas
#Ordena en orden decreciente
e1=sort(estaruras,decreasing = TRUE); e1
#Ordenar vector tipo caracter
calidad = c("media","baja","media","alta","media","baja","alta","baja")
#Le decimos que baja es el minimo de calidad, media es el intermedio y alta es la
maxima calidad
calidad1=ordered(calidad,c("baja","media","alta"))
calidad1
#Ordena de manera ascendente
sort(calidad1)
#Ordena de manera descendente
sort(calidad1, decreasing=TRUE)
#Listas
x1<-c(1.2)
lista1<-list(vector=x1, matriz=matriz1, dataframe=datos)
lista1
names(lista1)
lista1$matriz #muestra los elementos de la matriz
lista1[[2]] #muestra los elementos de la matriz
19
Curso: Manejo de datos en R
M.I. Ann Wellens & Dr. Wulfrano Gómez Gallardo Enero 2020
lista1[[2]][1,] #muestra el contenido del renglón 1 de la matriz lista1[[4]]<-
c(“nvo_objeto”) #agrega un objeto a la lista
lista1
familia<- list(padre="Juan", madre="María", edad_padres=c(30,29), num_hijos=3,
nom_hijos=c("Axel", "Damian", "Tania"), edad_hijos=c(7, 5, 3), ciudad="Madrid")
familia
#Regresa el nombre de las "variables"
names(familia)
#Extracción de datos
familia$padre familia$edad_hijos familia[[1]]
familia[[3]]
#Error, pues en listas no acepta extracción simultanea
familia[[c(1,3)]]
#Esta es la forma correcta de haces extracciones de más de un elemento
familia[c(1,3)]
familia[c(4,5,6)]
20