SlideShare una empresa de Scribd logo
Introducción al lenguaje R
1. Datos y Operadores Básicos
Nerys Ramírez
Universidad Autonomía de Santo Domingo
12/10/2016 1
Contenido
Objetivos
1. Introducción
1.1. Instalación y actualización
1.2. Interfaz
1.3. Ayuda
2. Tipos de Objetos,
vectores y matrices
2.1. Tipos de objeto
2.2. Vectores
2.3. Factores
2.4. Matrices
2.5. Data.Frame
2.6. Vectores indexados
3. Operadores
3.1. Aritméticos
3.2. Relacionales
3.3. Lógicos y filtros
3.4. Colon
3.5. Especiales: in
4. Strings
5. Valores perdidos
6. Adicionales
4.1. Precedencia
4.3. Exportar datos a Excel
4.4. Ejercicios finales
Referencias
12/10/2016 2
Objetivos y motivación
12/10/2016 3
Por qué R?
Fuente:
12/10/2016 4
 Es gratis.
 Curva de aprendizaje plana, pero
con alta potencia.
 Es flexible.
 Se actualiza constantemente,
contrario a los programas
comerciales tradicionales.
 Alto alcance.
 Incorporación anticipada de
técnicas estadísticas.
“R es el lenguaje de programación
estadístico más potente y más
flexible del planeta” (Norman Nie,
co fundador de SPSS)
Objetivo y motivación
Siempre el objetivos es poder reproducir el trabajo en el futuro,
modificando los menos posible el código, entres las
aplicaciones de la programar rutinas nos encontramos:
– En Boxjenkins necesitamos determinar la estructura
ARIMA(p,I,d) de series univariadas, en tal sentido,
necesitamos estimar los parámetros correspondiente al
modelo, podemos hacer que R tome la decisión de una
cantidad importante de series.
– El orden de integración.
– Guardar resultados de ecuaciones y secuencias basados
en matrices.
12/10/2016 5
Objetivo y motivación
• Entenderemos esto:
V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8))
is.na(v1)
> v1[is.na(v1) == F]
[1] 2.1 1.4 6.0 3.5 8.0
12/10/2016 6
1. Introducción
12/10/2016 7
1.1. Introducción
• R es un dialecto de lenguaje S, case-sensitive, que
inicialmente se desarrolló como una serie de versiones de
fortran. El mismo permite una gran cantidad de funciones
estadísticas básicas que se encuentran predeterminadas y
la creación de funciones.
• R es un lenguaje de programación de distribución libre creado
en 1993 por Ross Ihaka y Robert Gentleman. Que funciona
como ambiente en el que se aplican técnicas estadísticas en
lugar de una acumulación gradual de herramientas muy
específicas y poco flexibles (Santana y Farfáan, 2014).
12/10/2016 8
1.1. Instalación y actualización
• Para instalar R se visita el siguiente sitio:
https://www.r-project.org/
• Actualizar:
install.packages("installr")
setInternet2(TRUE)
installr::updateR() # actualizar R.
Las
actualizaciones
incluyen cambios
y mejoras pero
puede hacer
disfuncional los
programas ya
realizados.
12/10/2016 9
1.2. Introducción: interfaz
R funciona como una
calculadora.
> # Calculate 3 + 4
> 3 + 4
[1] 7
No obstante, es
recomendable guardar
los resultados un objeto
para poder automatizar
procesos.
> # Calculate 3 + 4
> myResults<-3 + 4
> myResults
[1] 7
Permite ver script, comandos, variables y
objetos, paquetes cargados, gráficos
12/10/2016 10
• Cuando introduces una expresión en la línea de comandos y das
ENTER, R evalúa la expresión y muestra el resultado. Por tanto, R
puede ser usado como una calculadora, ya que realiza operaciones
aritméticas, además de operaciones lógicas.
> 5*6
[1] 30
• imprime el resultado. Sin embargo, R es un lenguaje de
programación y normalmente la razón por la que usas éstos es para
automatizar los proceso y evitar la repetición innecesaria. Por tanto,
puedes guardar los resultados anteriores en otro cálculo.
• La manera de asignar un valor a una variable en R es usar el
operador de asignación (<-). Es equivalente a generar una variable.
> mi_result<-5*6
IMPORTANTE: Hay que acostumbrarse a no usar “=”
1.2. Introducción: interfaz
12/10/2016 11
• [Ejercicio 1.1.] Acaban de ofrecerte el precio de un producto
($130) cuyo pago en efectivo aplica un descuento del 10%,
calcula el precio final a pagar luego del descuento y guardalo en
un objeto llamado pre_art1. Posteriormente, obtén el precio total
a pagar, conociendo que tenias un carrito con valor de $500.
> pre_art1 <-130*0.9
> pre_art1 + 500
[1] 617
• Historial de comandos: Mediante el teclado (flechas) se puede
acceder a los últimos comandos ejecutados.
Ejercicio de clases:
12/10/2016 12
1.3. Introducción: uso
> 12+8+15+17+13+20+20
[1] 105
> 105/7
[1] 15
> (12+8+15+17+13+20+20)/7
[1] 15
> d<-c(12,8,15,17,13,20,20)
sum(d)
[1] 105
> length(d)
[1] 7
> sum(d)/length(d)
[1] 15
> mean(d)
[1] 15
#También podemos componer funciones
length(mean(d))
Tomado de Andrés Guerrero
> Un ejemplo del uso completo (entendamos la idea)
> # Calculo de la media aritmética de 7 números
12/10/2016 13
• Las expresiones de asignación. Observemos por ejemplo qué
pasa con la siguiente expresión:
> x <- y
Error: object "y" not found
• “R se ha quejado de la inexistencia del símbolo “y”, pero no se ha
quejado de la inexistencia del símbolo “x”. esto porque símbolo a
la izquierda de la asignación se emplea para la escritura de un
objeto al que hace referencia y, si no existe, esto equivale a lo que
sería la definición de una variable en otros lenguajes. En cambio,
el símbolo o símbolos que aparecen a la derecha son de lectura y
por lo tanto se presupone su existencia o definición previa.”
(Santana, 2011)
1.3. Introducción:
visibilidad del código
12/10/2016 14
• Case sensitivity: distingue entre mayúsculas y
minúsculas.
• getwd() nos devuelve el directorio de trabajo y el
comando setwd() nos permite modificarlo.
setwd("C:/Users/Nerys Ramierz/Dropbox/Curso R")
• Guarda workspace modificado
save.image(“workspace1”)
12/10/2016 15
1.3. Introducción: directorio de trabajo
• Como apreciaron, en la interfaz tradicional los objetos
creados no se visualizan de la forma tradicional, tal como
sucede en programas como Excel, pero existen algunos
comandos iniciales que nos permites visualizarlos:
> myResults
[1] 7
> ls() #lista los objetos en memoria
> ls(pat=n) #listar objetos con algún característica
> rm(list=ls()) #Borra todos los objetos en memoria
12/10/2016 16
1.4. Introducción: visualizar objetos
• Muchas herramientas de R no están disponible directamente,
no obstante, podemos contar con ella mediante librerías. La
forma correcta de adherirlas al programa es:
Install.packeges(ggplot2)
library(ggplot2)
• Cada paquete, por lo general, tiene un archivo de ayuda que
permite estudiar sus funciones y utilidad.
12/10/2016 17
1.5. Introducción: paquetes
• En R encontrarás un menú de recursos, entre los cuales se
encuentran manuales, referencias y demás material para co
menzar a aprender R.
Ayuda sobre comandos Ayuda sobre temas
help(print)
help.search("print")
?print
??regression
help.search("regression")
• También puedes obtener ejemplos del uso de funciones con la
función, Con eso tendrás una idea de lo que puedes hacer con
esta función.
example("read.table")
args(sqrt)
12/10/2016 18
1.4. Introducción: ayuda
1.4. Introducción:
Datos pre-instalados
• R dispone de bases de datos pre-instaladas que nos
permiten ir practicando en la medida que avanzamos.
El siguiente código, lista todas las bases pre-instaladas.
data(package=.packages(all.available=TRUE))
12/10/2016 19
2. Tipos de objetos:
vectores y matrices
12/10/2016 20
En algún lugar de este apartado puedes necesitar saber usar los
operadores de R, en tal caso busca ayuda en el apartado 3.
2.1. Tipos de objetos
• Los objetos se pueden clasificar en dos grupos:
– Atómicos: todos los elementos son del mismo tipo (vectores y
matrices)
– Recursivos: pueden combinar una colección de objetos
diferentes. (dataframe, listas)
• Todas las cosas que manipula R se llaman objetos. los mismo pueden
ser de diversos tipos y tener diferentes tipos de datos. En general,
éstos se construyen a partir de objetos más simples y se definen con
el operador de asignación (<-). Existen 5 tipos de objetos:
1. Caracteres (letras). Estas expresiones se denotan entre comillas.
2. Numéricos.
3. Interger. Es numérico, pero ocupa menos memorias.
4. Complex. Permite representar números complejos.
5. Logical.
12/10/2016 21
1. Caracteres (letras). Estas expresiones se denotan entre
comillas. Es cualquier cadena de caracteres
alfanuméricos. Deben introducirse entre comillas (si ",
no “). Para convertir cualquier número en una caden
a de caracteres se utiliza el comando as.character().
x <- c("a", "b", "c")
class(x)
nombres<-c(“Maria”, “Jesus”)
12/10/2016 22
2.1. Tipos de objetos
1. Numérico. Es el tipo de dato con mayor importancia.
El mismo permite almacenar vectores y matrices.
x <- c(1,2,3,4,5)
12/10/2016 23
2.1. Tipos de objetos
• Lógicos. También hay objetos lógicos (logic) que representan los
valores lógicos falso y verdadero. En R el valor falso se
representan por FALSE únicamente por la letra F mayúscula; de la
misma manera, el valor lógico verdadero es representado por la
instrucción TRUE (=1) o por la letra T.
• Permiten:
– Calcular proporciones
– Calcular dummys
– Indexar variables para acceder a posiciones de vectores
– Vectorizar operaciones
– …
12/10/2016 24
2.1. Tipos de objetos
• [Ejercicio 1.2.] crea una variable llamada ‘colores’ que contenga
un vector con las cadenas "rojo", "azul", "verde", "azul", "rojo", en
ese orden.
• [Ejercicio 1.3.] definido el vector x<-c(1,2,3,4,5) verifique
para que se utiliza la función class(x).
• [Ejercicio 1.4.] definido el vector lógico x<-c(T,T,F,F,T)
genera un vector numérico, utilizando la función as.numeric(x).
Identifique que valores son 1 y cuales 0.
Ejercicios de clases:
12/10/2016 25
2.2. Vectores
12/10/2016 26
2.2. Vectores:
numéricos
• El vector es el objeto más simple en R, es una colección
ordenada de número. R puedes construir vectores más
largos usando la función c(). (todos sus elementos son
iguales)
c(2, 3, 5)
[1] 2 3 5
• La función c() sirve para concatenar varios elementos
del mismo tipo:
v <- c(8, 7, -3, 2, 182)
assign(“v", c(8, 7, -3, 2, 182))
12/10/2016 27
• Otra característica interesante de este lenguaje, es que permite dar
nombre y acceder por medio de ese nombre a los elementos
individuales de un vector.
frutas <- c(15, 100, 2, 30)
names(frutas) <- c("naranja", "pera", "manzana", "durazno")
> frutas["naranja"]
naranja
15
12/10/2016 28
2.2. Vectores:
numéricos con nombres
• [Ejercicio 1.5.] El número de clientes atendidos por un peluquero
durante la semana es 45,43,56,48,51, crea un vector llamado v y
asígnale un nombre a cada día registrado, iniciando por el lunes, luego
imprima los nombres:
> v <- c(45,43,56,48,51)
> names(v) <- c("Lun", "Mar", "Mie", "Jue", "Vie")
Lun Mar Mie Jue Vie
45 43 56 48 51
> names(v)
[1] "Lun" "Mar" "Mie" "Jue" "Vie"
12/10/2016 29
Ejercicios de clases:
2.2. Vectores:
Secuencias y repeticiones
• Otra característica interesante de este lenguaje, es que permite dar
nombre realizar secuencias.
<-1:20 # del 1 al 20
a<-20:1 # del 20 al 1
a<-seq(1,20) #vector que vaya desde 1 a 20
a<-seq(1,20,by=2) # fijar intervalos de la secuencia
a<-seq(1,20,length=12) # fijar longitud de la secuencia
• La función rep sirve para generar repeticiones de objetos:
a<-1:5; a5<-rep(a,times=5) #repetir un vector n veces
a<-1:5; a5<-rep(a,each=5) #repetir cada elemento 5 veces
12/10/2016 30
• [Ejercicio 1.6.] Para que se ejecutan las siguientes líneas de
código:
1:10
[1] 1 2 3 4 5 6 7 8 9 10
> rep(1:4,2) #repetimos 1:4 dos veces.
[1] 1 2 3 4 1 2 3 4
> rep(1:4,each=2)
[1] 1 1 2 2 3 3 4 4 #intercalando el resultado.
12/10/2016 31
Ejercicios de clases:
• [Ejercicio 1.7.] Dispone de una serie de tiempo de frecuencia
mensual en el siguiente espacio temporal 1990-2000, estudias la
estacionalidad del mismo por tanto necesita crear las siguientes
secuencias:
a. Inserte el vector anios y meses asignando a cada mes un número
que sea igual al orden que ocupe (ene=1, feb=2,…).
b. *Cree una dummy llamada dic que sea igual a 1 if mes=diciembre
y cero el resto de los meses. (Pista: vectores lógicos pueden
ayudar)
c. *Cree otra dummy llamada ulttri que sea igual a 1 durante el
ultimo trimestre del año y 0 el resto de los años.
d. *Presente una matriz con todos los resutlados. [Pista: cbind]
12/10/2016 32
Ejercicios de clases:
#Respuesta ejercicio 1.7.
# a.
anio<-rep(1990:2000, 12)
mes<-rep(1:12, length(anio)/12)
#b.
dic<-as.numeric(mes==12)
#c
ultri<-as.numeric(mes==10:12)
#d
cbind(anios, mes, dic, ultri)
12/10/2016 33
Ejercicios de clases:
anios mes dic ultri
[1,] 1990 1 0 0
[2,] 1990 2 0 0
[3,] 1990 3 0 0
[4,] 1990 4 0 0
[5,] 1990 5 0 0
[6,] 1990 6 0 0
[7,] 1990 7 0 0
[8,] 1990 8 0 0
[9,] 1990 9 0 0
[10,] 1990 10 0 1
[11,] 1990 11 0 1
[12,] 1990 12 1 1
2.2. Vectores:
Funciones útiles
Utilizando el siguiente vector:
mi_vector <- c(2,5,8,6,7,9,10,15,-1,8)
pruebe las siguientes funciones:
max(x) Devuelve el elemento máximo del vector.
min(x) Devuelve el elemento mínimo del vector.
range(x) Devuelve el elemento mínimo y máximo del vector.
length(x) Devuelve la dimensión del vector.
sum(x) Devuelve la suma de todos los elementos.
prod(x) Devuelve el producto de todos los elementos.
sort(x, decreasing=T) Devuelve los elementos ordenados.
rank(x) [1] 2.0 el primer valor es el segundo más bajo,
las posiciones que ocupa cada elemento del vector.
diff(x) diferencias absolutas
Order(x) [1] 9 1 … el valor más bajo esta en la posición 9
12/10/2016 34
[Ejercicio 1.8.] Dado el vector x<-c(8,9,7,4,6,5,7,2,9,8,2,4,7,5):
- Calcular el número de elementos.
- Obtenga un vector de la diferencia absoluta del vector.
- En que posición se encuentra el valor mínimo.
- Ordena de menor a mayor.
[Ejercicio 1.9.] Cuales son las diferencias entre rank y order.
12/10/2016 35
Ejercicios de clases:
2.2. Vectores:
Vector vacio
• De mucha utilidad cuando realizamos procedimientos recursivos
que luego necesitamos ir completando.
vv <- numeric()
• Nota: los vectores índices se ven más adelante.
12/10/2016 36
2.3. Factores
12/10/2016 37
2.3. Factores
• Los factores son otro tipo especial de vectores usados para representar
datos categóricos, éstos pueden ser ordenados o no. La impresión de
un factor muestra información ligeramente diferente a la de un vector
de caracteres. En particular, puedes notar que las comillas no son
mostradas y que los niveles son explícitamente impresos.
> x <- factor(c("Hombre","Mujer","Hombre","Hombre","Mujer"))
>x
[1] Hombre Mujer Hombre Hombre Mujer
Levels: Hombre Mujer
## tabla de frecuencia simple
>table(x)
x
Hombre Mujer
3 2
12/10/2016 38
2.3. Factores ordinales
• Se puede asignar un orden para dar sentido ordinal a las variables
cualitativas. (DataCamp ejemplos).
temperature_vector <- c("High", "Low", "High","Low", "Medium")
factor_temperature_vector <- factor(temperature_vector,
order = TRUE,
levels = c("Low", "Medium", "High"))
factor_temperature_vector
[1] High Low High Low Medium
Levels: Low < Medium < High
12/10/2016 39
• [Ejercicio 1.13.] Contabilice, mediante una tabla de frecuencia, la
cantidad de a que existe en el siguiente factor [R.4]:
x<-factor(c(LETTERS[3:1], rep(LETTERS[1],2), LETTERS[1:1]))
> table(x)
x
A B C
4 1 1
• [Ejercicio 1.14.]* [Guarda resultados] Guarde el número de “A” en un
vector llamado tragabala y luego multiplíquelo por dos:
> tragabala<-table(x)[1]
> tragabala*2
A
8
12/10/2016 40
Ejercicios de clases:
2.4. Matrices
12/10/2016 41
2.4. Matrices
• Desde el punto de vista del lenguaje, una matriz es un vector con
un atributo adicional. Existen diversas maneras de generar una
matriz:
> A = matrix(
+ c(2, 4, 3, 1, 5, 7), # the data elements
+ nrow=2, # number of rows
+ ncol=3, # number of columns
+ byrow = TRUE) # fill matrix by rows
x<-matrix(1:12,4,3) matrix(1:12, nrow=4, ncol=3)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
12/10/2016 42
• Los datos en R se van rellenando columna a columna de
izquierda da derecha. Aunque también se puede
especificar el orden deseado.
matrix(1:12, nrow=4, ncol=3,
byrow=TRUE)
matrix(1:12, nrow=4, ncol=3,
byrow=FALSE)
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
12/10/2016 43
2.4. Matrices:
byrow
2.4. Matrices:
nombres de filas y columnas
• A las matrices creadas podemos crear nombre y luego
acceder a sus elementos a partir de los nombres creado, las
funciones para realizar es tarea son colnames y rownames:
12/10/2016 44
x<-matrix(1:12,4,3)
>x
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
colnames(x)<-c("edad","peso","altura")
rownames(x)<-c("Perla","Carlos","Eva","Alex")
> x
edad peso altura
Perla 1 5 9
Carlos 2 6 10
Eva 3 7 11
Alex 4 8 12
• Se pueden combinar matrices de distintas manera,
según lo deseado, sea por filas o columnas, usando las
funciones rbind() y cbind().
x<-matrix(1:12,4,3)
rbind(x, c(1,2,3)) cbind(x, c(1,2,3,4))
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11
[4,] 4 8 12
[5,] 1 2 3
[,1] [,2] [,3] [,4]
[1,] 1 5 9 1
[2,] 2 6 10 2
[3,] 3 7 11 3
[4,] 4 8 12 4
12/10/2016 45
2.4. Matrices:
agregar filas y columnas
Útil para guardar resultados secuenciales.
nrow(x), Averiguar el número de filas
ncol(x), Averiguar el número de columnas
dim(M), dimension de una matriz
rowSums()
colSums()
% _ %, Multiplicar matrices
t(x), transponer
solve(x), Invertirlas
diag(x), Utilizar la diagonal
12/10/2016 46
2.4. Matrices:
Funciones útiles
Prueba algunas de las funciones con el ejercicio 1
• [Ejercicio 1.15.] Dada la siguiente matriz:
datos<-matrix(c(20,65,174,22,70,180,19,68,170),nrow=3,byrow=T)
dimnames(datos)<-list(c("paco","pepe","kiko"),
c("edad","peso","altura"))
> datos
edad peso altura
paco 20 65 174
pepe 22 70 180
kiko 19 68 170
Agrega los datos de feliz (edad=18; peso=81; altura=182) e imprima
los resultados en la consola de R.
feliz<-c(18,81,182)
datos<-rbind(datos,feliz)
12/10/2016 47
Ejercicios de clases:
Tomada de: http://halweb.uc3m.es/esp/Personal/personas/jmmarin/esp/ManualR/intro_estructurasdedatos.html
• [Ejercicio 1.16.] Anide las funciones diag y sum para calcula la traza de la
matriz [my_matriz<-matrix(9,3,3)]
my_matriz<-matrix(9,3,3)
sum(diag(my_matriz))
[1] 27
12/10/2016 48
Ejercicios de clases:
• [Ejercicio 1.16.] [Tomado de Coursera, curso de programación en
Matlab] Dado un vector x<-c(1:5), crea una matriz donde la primera
columna contenga los elementos de x, la segunda x^2 y la tercera x^3.
x<-c(1:3)
cbind(x,x^2,x^3)
x
[1,] 1 1 1
[2,] 2 4 8
[3,] 3 9 27
• [Ejercicio 1.17.]* Realiza el ejercicio anterior con un bucle for.
[Pista, codigo Matlab].
for i=1:3
A(:,i)=v.^i;
end
12/10/2016 49
Ejercicios de clases:
*Anímate a obtener la diagonal principal
de la matrix, mediante la función diag(),
Puedes obtenerla sin la función y sin
bucles?
(1:3)^(1:3)
• El comando data.entry() permite visualizar una serie de
datos en forma de hoja de calculo.
x<-c(1:3)
y<-cbind(x,x^2,x^3)
data.entry(y)
12/10/2016 50
2.4. Matrices:
Data.entrys
2.5. Data Frame
12/10/2016 51
• Los data frames nos permiten visualizar datos de diferentes
formatos, tal como lo conocemos en formato Excel o SPSS.
– Los componentes deben ser vectores (numéricos, carácter o
lógicos).
– La longitud de los vectores deben ser la misma.
nota<-c(80,98,67,74)
nombre<-c("Pedro", "Manuel", "Arix","Vianca")
data.frame(nombre, nota, aprobado=nota>70)
nombre nota aprobado
1 Pedro 80 TRUE
2 Manuel 98 TRUE
3 Arix 67 FALSE
4 Vianca 74 TRUE
12/10/2016 52
2.5. Data Frames
• [Ejercicio 1.17.] Inserte en R un data frame con la siguiente estructura:
peso <- c(50,70,45,80,72)
altura <- c(160,165,180,190,175)
edad <- c(20,40,41,31,33)
nombres <- c("Lorena","Manolo","Carmen","Luis","Sara")
sexo <- c("M","H","M","H","M")
datos <- data.frame(nombres,sexo,peso,altura,edad)
datos
nombres sexo peso altura edad
1 Lorena M 50 160 20
2 Manolo H 70 165 40
3 Carmen M 45 180 41
4 Luis H 80 190 31
5 Sara M 72 175 33
12/10/2016 53
Ejercicios de clases:
• Podemos importar los data.frame desde archivos
planos como un txt. Esta es otra forma habitual de
cargar dato en R que estén en formato .txt es:
datos<- read.table(file="datos.txt", header=TRUE)
Nota: Recuerde que si solo coloca el nombre del archivo, acedará al directorio de
trabajo en que este trabajando R, en otro caso debe colocar la dirección
completa.
12/10/2016 54
2.5. Data Frames
Importar archivos planos (.txt)
2.6. Acceso a porciones
o subconjuntos de datos y resultados
12/10/2016 55
2.6. Vectores índice
• R permite acceder a un elemento de un vector añadiendo el nombre
de un vector en un índice entre corchetes []. El vector índice, indica
parte de otro vector y puede ser de tres tipos:
– Vector de números enteros: son números inter, en caso de ser
positivos son concatenados y en caso de ser negativos son omitidos.
No hace falta sea de igual longitud al vector seleccionado.
– Vector lógico: los valores correspondientes a TRUE son seleccionados,
ambos vectores deben ser de igual longitud.
– Vector de nombres: solo se aplica cuando el vector tiene el atributo
name.
12/10/2016 56
• Una vez creado un vector se pueden obtener diversos resultados y ver
qué clase de elementos está contenida en el vector. En el siguiente
comando se pueden ver algunos ejemplos.
# Operaciones con elementos
v[4]+v[2]
# Guardar los resultados en una posición
v[1] <- v[2] - v[5]
# Del primer al quinto elemento
v[1:5]
• El acceso a los elementos individuales de un vector no solamente es
para consulta o lectura, sino también para su modificación o escritura.
12/10/2016 57
2.6. Vectores índice:
Ejemplos con vectores
v<-c(12,13,18,-2,1.8,9,3,4,5,8,9,6,5,4)
v[5] # El quinto elemento
v[-5] # Todos los elementos, menos el quinto
• para quedarnos con todos los elementos de x salvo los 3 primeros.
x[-(1:3)]
– También podemos accedeer a posiciones especificas
x[c(1,3,7)]
12/10/2016 58
2.6. Vectores índice:
Ejemplos con vectores
• [Ejercicio 1.18.] Dado el siguiente vector de edades:
edad <- c(20,40,23,41,31,33,54,8,22)
12/10/2016 59
Ejercicios de clases:
a) Utilice la indexación de vectores para acceder a la edad colocada en
la tercera posición.
b) Obtenga las tres primeras posiciones de dos formas diferentes.
c) Sume la primera y la última posición.
d) Repite el ejercicio d anidando la función length().
> edad[3] #a
[1] 23
> edad[1:3] #b.1
[1] 20 40 23
> edad[c(1,2,3)] #b.2
[1] 20 40 23
> edad[1]+edad[9] #c
[1] 42
> edad[1]+edad[length(edad)] #d
[1] 42
• Selección de elementos de acuerdo con una condición: índice lógico o
indexación (ver sección siguiente para tipos de operadores).
v<-c(-4:2,1:3,8:1)
[1] -4 -3 -2 -1 0 1 2 1 2 3 8 7 6 5 4 3 2 1
v < 0 # [1] TRUE TRUE TRUE
v[v < 0] # [1] -4 -3 -2 -1
# negacion lógica, con el operador !
v[!(v < 0)]
v[v >= 0]
Fmes.nacimiento == "Mar“
x <- c("a", "b", "c", "d")
x[x < "d"]
12/10/2016 60
2.6. Vectores índice:
valores lógicos
• [Ejercicio 1.19.] Dado un vector de números enteros:
my_vector<-c(1:10)
a) Crea un nuevo vector llamado neno, con todos los valores superiores a 5.
b) Utilice la indexación lógica para obtener los impares de dicho vector.
c) Ahora obtenga todos los impares entre 4 y 7.
> my_vector[my_vector>5]
[1] 6 7 8 9 10
> my_vector[c(T,F)]
[1] 1 3 5 7 9
> my_vector[4:7][c(F,T)]
[1] 5 7
12/10/2016 61
Ejercicios de clases:
• [Ejercicio 1.20.] Dado un vector irregular:
my_vector<-c(2,4,8,9,5,1,4,8,3,7,8,1,9,6)
a) Crea un nuevo vector llamado neno, con todos los valores superiores a 5.
b) Utilice la indexación para obtener los impares de dicho vector (p. residuo).
c) Utilice la indexación para obtener las coordenadas impares de dicho vector.
> my_vector[my_vector>5]
[1] 6 7 8 9 10
> my_vector[my_vector%%2!=0]
[1] 9 5 1 3 7 1 9
> which(my_vector%%2!=0)
[1] 4 5 6 9 10 12 13
12/10/2016 62
Ejercicios de clases:
• [Ejercicio 1.21.]* Dado un vector de números:
x<-c(0,7,8,7)
comente los siguientes comandos:
x[x!=0]
(x+1)[x!=0]
(x+1)[1:2][x!=0]
(x)[x!=0 | x=7] #detecta el error
(x[2:length(x)]-x[1:(length(x)-1)])/x[1:(length(x)-1)]
12/10/2016 63
Ejercicios de clases:
2.2. Vectores índice:
Funciones which
Esta función es sumamente útil, te indica la posición del vector donde se
encuentra una numero determinado [ver también which.min()
which.max()]. Fijense que no accedemos directamente a una posición,
sino que desconocemos el índice y deseamos acceder a partir de una
característica determinada.
> mi_vector <- c(2,5,8,6,7,9,10,15,-1,8)
> which(mi_vector==2)
[1] 1
También ponemos componer esta función:
> which(mi_vector==max(mi_vector))
[1] 8
Ejemplo
aplicado: en los
modelos
factoriales
donde
buscamos el
Máx{R2}.
12/10/2016 64
• [Ejercicio 1.10.] Dado el siguiente vector votos_ocoa <-c(12356,
11231, 15675), referidos a la cantidad de votos de los partidos 1, 2 y 3,
respectivamente, utilice la función which para determinar el partido
vencedor. (pista: puedes usar ==max(x) ) y selecciones los valores superior
a su media.
> votos_ocoa <-c(12356, 11231, 15675)
> which(votos_ocoa==max(votos_ocoa))
[1] 3
which(votos_ocoa==(votos_ocoa>mean(votos_ocoa)
• [Ejercicio 1.11.]* Suponga que en vez de número, tienes el partido “a”, “b”
y “c”, y en vez de números desea obtener el nombre del partido vencedor.
[crea primero un vector de nombres]
# creo un vector de nombres
> nombres<-c("a","b","c")
> nombres[which(votos_ocoa==max(votos_ocoa ))]
[1] "c"
12/10/2016 65
Ejercicios de clases:
• [Ejercicio 1.12.]* Suponga ha obtenido los datos de azua
[votos_azua <-c(16356, 14231, 9675)] y bani [votos_bani <-c(6356, 4231,
975)], por tanto ahora obtiene una matriz de datos y necesita saber
el partido que gano en cada provincia: como lo harías?
> result<-numeric()
> for (i in 1:3){
+ result[i]<nombres[which(votosProvin[,i]==max(votosProvin[,i]))]
+ }
> result
[1] "c" "a" "a"
12/10/2016 66
Ejercicios de clases (motivar bucles):
• En caso de una matriz bidimensional se puede especificar x[nfila,ncol],
indicando la ubicación tanto de la fila como de la columna.
> my_matrix <- matrix(1:12, nrow = 3, ncol = 4)
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
#Obtener el elemento de la fila 2, columna 3
> my_matrix[2,3]
[1] 8
#Llamar todos los elementos de la fila 2
> my_matrix[2,]
[1] 2 5 8 11
12/10/2016 67
2.6. Vectores índice:
matrices
• También podemos eliminar filas o columnas de una
matriz mediante la indexación:
> m[2, ,drop=F]
[,1] [,2] [,3] [,4]
[1,] 2 5 8 11
12/10/2016 68
2.6. Vectores índice:
matrices
• [Ejercicio 1.22.]* [Tomado de coursera]Dada la matriz:
my_mat<- matrix(12:1,3,4)
a) Obtenga una matriz [2x2] con los elementos de la esquina superior izquierda.
b) Obtenga una matriz [2x2] con los elementos de la esquina superior derecha.
c) Obtenga una matriz [2x2] con los elementos de la esquina inferior derecha.
d) Como transformaría el inciso #c para que sea estándar para cualquier matriz?
#a
> my_mat[1:2,1:2]
#b
my_mat[1:2,3:4]
#c
my_mat[(3-2+1):3,(4-2+1):4]
12/10/2016 69
Ejercicios de clases:
• [Ejercicio 1.23.]* [Tomado del curso Introducción a la programación en
Matlab] Dada una matriz:
my_mat<- matrix(1:12,3,4)
devuelve devuelve una matriz que contiene sólo los elementos de my_mat
que se encuentran en filas y columnas impares. Es decir, en las
coordenadas (1,1)(3,1)… que no esten ni en filas, ni en columnas pares.
my_mat[c(T,F), c(T,F)]
[,1] [,2]
[1,] 1 7
[2,] 3 9
• [Ejercicio 1.24.]* Intentelo con el operador colon o el comando seq. [R.
my_mat[seq(1,3,2), seq(1,4,2)]
12/10/2016 70
Ejercicios de clases:
• Cuando se trabaja con data.frame, se puede acceder a
sus subconjuntos, usando el símbolo de $, a su
izquierda se coloca el nombre de la lista y a la derecha.
> x <- data.frame(elia=rnorm(4,mean=0,sd=4), coco=c(T, T, F, F))
x
elia coco
1 -6.5209647 TRUE
2 1.6486238 TRUE
3 7.5228359 FALSE
4 0.2848676 FALSE
> x$elia
[1] 5.588611 -1.428934 -3.683146 3.452413
12/10/2016 71
2.6. Vectores índice:
Data.frame $
• Es incontable la cantidad de ocasiones en que necesitamso guardar
nuestros resultados en alguna matriz de datos dinal, que exportamos a
Excel para poder la presentación final de nuestros datos. (en la sección
de bucles es importante esto quede claro).
> summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
> summary(mtcars$mpg)[1]
Min.
10.4
> summary(mtcars$mpg)[2]
1st Qu.
15.42
> summary(mtcars$mpg)[3]
Median
19.2
12/10/2016 72
2.6. Vectores índice:
Funciones
• En muchisimos casos necesitamos acceder a una parte de los
resutlados de alguna función, aquí ilustramos un ejemplo usando la
base de datos mtcars.
# Estudia brevemente la base de datos
mtcars
help(mtcars)
# podemos estimar el modelo de regresión simple (utilizando lm)
> lm(mtcars$mpg ~ mtcars$drat)
Call:
lm(formula = mtcars$mpg ~ mtcars$drat)
Coefficients:
(Intercept) mtcars$drat
-7.525 7.678
12/10/2016 73
2.6. Vectores índice:
Un ejemplo con el modelo de regresión (1)
• Es incontable la cantidad de ocasiones en que necesitamso guardar
nuestros resultados en alguna matriz de datos dinal, que exportamos a
Excel para poder la presentación final de nuestros datos. (en la sección
de bucles es importante esto quede claro).
> summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.42 19.20 20.09 22.80 33.90
> summary(mtcars$mpg)[1]
Min.
10.4
> summary(mtcars$mpg)[2]
1st Qu.
15.42
> summary(mtcars$mpg)[3]
Median
19.2
12/10/2016 74
2.6. Vectores índice:
Ejemplos con funciones
# Puede darse en caso que necesitemos nos implima más resultados
> myresult<-lm(mtcars$mpg ~ mtcars$drat)
> summary(myresult)
Call:
lm(formula = mtcars$mpg ~ mtcars$drat)
Residuals:
Min 1Q Median 3Q Max
-9.0775 -2.6803 -0.2095 2.2976 9.0225
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -7.525 5.477 -1.374 0.18
mtcars$drat 7.678 1.507 5.096 1.78e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 4.485 on 30 degrees of freedom
Multiple R-squared: 0.464, Adjusted R-squared: 0.4461
F-statistic: 25.97 on 1 and 30 DF, p-value: 1.776e-05
12/10/2016 75
2.6. Vectores índice:
Un ejemplo con el modelo de regresión (2)
# O necesitamos acceder algún elemento de la
estimación para un test de hipotesis adicional o
graficar los residuales.
> myresult<-lm(mtcars$mpg ~ mtcars$drat)
> summary(myresult)
> summary(myresult)$r.squared
#acceder mediante funciones
resid(myresult)
#acceder mediante indexación
Myresult[2]
#ver los atributos
attributes(summary(lm(ind_ipcddom ~ var_depent)))
12/10/2016 76
2.6. Vectores índice:
Un ejemplo con el modelo de regresión (3)
• Estas impresiones en ocasiones aparecen en
formatos no deseados:
format(1/1:5, digits = 2)
[1] "1.00" "0.50" "0.33" "0.25" "0.20“
format(123456789, big.mark = ",")
[1] "123,456,789”
> sprintf("%f", pi)
[1] "3.141593“
> sprintf("%.3f", pi)
[1] "3.142"
12/10/2016 77
2.6. Vectores índice:
Salidas
3. Operadores
12/10/2016 78
3.0. Operadores en R
• En resumen, tenemos tres tipos de operadores:
Aritméticos Comparativos Lógicos
+ Suma == igualdad & Y lógico
- Resta != Diferente de ! No lógico
* Multiplicación < Menor que | O lógico
/ División > Mayor que all
^ Potencia <= Menor o igual any
%% residuo >= Mayor o igual
%in% igual grupos
%like%
igualdad no exacta
12/10/2016 79
3.1. Operadores aritméticos
12/10/2016 80
3.1. Operadores en R:
Operadores aritmético
• Las operaciones aritméticas permiten realizar operaciones
del mismo nombre sobre matrices, vectores o data frames.
`+`suma # v <- 2 + 3
`-`resta # v <- c(2, 3) - c(5, 1)
`/`división
`*`multiplicación
`^`potencia'
sqrt() raíz cuadrada # v <- c(9, 8, 31)
abs() valor absoluto
Nota: Si los dos vectores son de diferente tamaño, R repetirá la secuencia
más pequeña múltiples veces. (> c(1,2,3,4)-c(1,2))
12/10/2016 81
• [Ejercicio 1.25.] Tenemos 530 monedas de 1 centavo; 1 centavo,
265 de 5 centavos, 80 de 10 centavos, y 80 de 25 centavos,
calcular la cantidad de dólares que tenemos:
> 530*(1/100)+265*(1/20)+80*(1/10)+80*(1/4)
[1] 46.55
a) En muchos casos es preferible utilizar la notación matricial, que facilita
bastante le calculo y resume los resultados.
> c(530,265,80,80)%*%c(1/100,5/100,10/100,25/100)
[,1]
[1,] 46.55
12/10/2016 82
Ejercicios de clases:
3.2. Operadores relacionales
12/10/2016 83
• Los operadores relacionales, permiten obtener comparar
elementos de un vector y relaciones para generar
secuencias lógicas.
`> ` (mayor que),
`< ` (menor que),
`>=` (mayor igual),
`<=` (menor igual),
`==` (igualdad),
`!=` (diferencia)
12/10/2016 84
3.2. Operadores en R:
Operadores relacionales
3.3. Operadores lógicos
12/10/2016 85
• En el caso de estos operadores, permiten agrupar operadores
relacionales.
`&` and | or
12/10/2016 86
3.3. Operadores en R:
Operadores lógicos
• [Ejercicio 1.26.] Dado un vector: x<-c(7,8,1,8,9,5,6,4,8,9,10), utiliza
algún operador lógico que te permita conocer el total de los elementos
comprendidos entre 3 y 7:
sum((3 <= x & x <= 7))
[1] 4
a. Obtenga un vector llamado el_brother, lógico =TRUE cuando el elemento
correspondiente al vector x este comprendido entre 3 y 7.
el_brother<-(3 <= x & x <= 7)
el_brother
[1] TRUE FALSE FALSE FALSE FALSE TRUE TRUE...
• [Ejercicio 1.27.] Estudie la diferencia entre los siguientes comandos:
(3 <= x & x <= 7)
x[(3 <= x & x <= 7)]
12/10/2016 87
Ejercicios de clases:
• Podemos utilizar las operaciones lógicas para
establecer filtros en matrices y data.frame:
> my_matrix <-matrix(1:12, nrow=4, ncol=3, byrow=TRUE)
> my_matrix
[,1] [,2] [,3]
[1,] 1 2 3
[2,] 4 5 6
[3,] 7 8 9
[4,] 10 11 12
my_matrix[(my_matrix[, 1] == 4), , drop = FALSE]
[,1] [,2] [,3]
[1,] 4 5 6
12/10/2016 88
3.3. Operadores en R:
Operadores lógicos, filtros
• [Ejercicio 1.28.] Dado un vector nombres<-c("Pedro", "María", "Julia",
"Marcos", "Anna"), crea un vector llamado sexo de la personas, este
vector contiene los caracteres "H" y "M" según sea hombre o mujer.
Posteriormente utilice este vector para llamar a los varones del vector
nombre.
sexo <-c("H","M","M","H","M")
nombres[sexo=="H"]
[1] "Pedro" "Marcos“
• [Ejercicio 1.29.]* Utilice la indexación lógica para determinar el
porcentaje de hombres en su vector:
> mean(sexo=="H")
[1] 0.4
12/10/2016 89
Ejercicios de clases:
3.4. Operador colon
12/10/2016 90
• El operador Colon permite vectorizar operaciones y evitar
realizar operaciones. Los dos puntos (:) es el operador para
crear secuencias de forma que:
x <- 1:10
[1] 1 2 3 4 5 6 7 8 9 10
• La c puede utilizar para concatenar cosas e incluir diferentes
elementos en un vector.
2^(3:1)
2^((1:10)[c(F,T)])
12/10/2016 91
3.4. Operadores en R:
Operador colon
• Esta característica permite resumir códigos. El próximo
ejemplo se ilustra cómo usar vectores naturalmente para
realizar operaciones comunes.
y <- 1:5; x <- 6:10
y/x
[1] 0.1666667 0.2857143 0.3750000 0.4444444 0.5000000
12/10/2016 92
3.4. Operadores en R:
Operador colon
• [Ejercicio 1.30.] Hemos visto diferentes formas de definir vectores con R.
Supongamos que queremos definir el vector x = (1, 2, 3, 4, 5). Comprueba que
las siguientes formas son equivalentes.
x<-c(1,2,3,4,5) ; x<-1:5 ; x<-seq(1,5)
• [Ejercicio 1.31.] Dado un vector x <- c(11,13,16,15,15,18), utiliza la
vectorización para calcular la primera diferencia y la tasa de crecimiento
(discreta) de dicho vector.
> (x[2:6]-x[1:5])
> (x[2:6]-x[1:5])/x[1:5]
[1] 0.1818182 0.2307692 -0.0625000 0.0000000 0.2000000
• [Ejercicio 1.32.] Define el vector y <- (1, 3, 5, 7) utilizando la
función c(). ¿Cómo lo harías con la función seq()?. Recuerda que si tienes
alguna duda sobre cómo se definen las funciones siempre puedes consultar la
ayuda.
> y<-c(1, 3, 5, 7)
seq(from = 1, to = 7, by = 2)
12/10/2016 93
Ejercicios de clases:
• [Ejercicio 1.33.]* [Tomado de Coursera, curso de programación en
Matlab] Dado un entero positivo n, escriba un código que regrese la
media [utilice mean()] del cuadrado de los n enteros. si n es 5, tiene que
calcular el promedio de los números 1, 4, 9, 16 y 25:
> n<-5
mean((1:n)^2)
[1] 11
12/10/2016 94
Ejercicios de clases:
3.5. Operadores especiales
12/10/2016 95
• En muchas ocasiones necesitamos acceder a las
posiciones que se encuentran entre ciertas posiciones
(piense en los momentos acotados). En tales casos
se utiliza el operador, %in%, el mismo verifica si i un
cierto elemento de nuestro vector es igual a los
elementos de un conjunto representado por un vector.
n <- c(0,2,1,3,5,4,2,1,0,5)
(n %in% c(0,1))
[1] TRUE FALSE TRUE FALSE FALSE ...
12/10/2016 96
3.5. Operadores especiales en R:
%in%
• [Ejercicio 1.34.] Dado un vector: x<-c(7,8,1,8,9,5,3,4,8,7,10).
a) utiliza algún operador lógico que te permita conocer el total de los elementos
iguales a 3 o 7.
b) Obtenga un vector x2 donde remplace por 0 los elementos del vector x
iguales a 3 o 7.
#a
sum((x %in% c(3,7)))
[1] 3
#b
> x[x %in% c(3,7)]<-0
> x
[1] 0 8 1 8 9 5 0 4 8 0 10
12/10/2016 97
Ejercicios de clases:
12/10/2016 98
USArrests[1,]
Murder Assault UrbanPop Rape
Alabama 13.2 236 58 21.2
> substr('tragabala', start = 1, stop = 4)
[1] "trag“
> nchar('tragabala') #cuenta caracteres, !=length
[1] 9
> Última tres letra
> substr('tragabala', nchar('tragabala')-3+1, nchar('tragabala'))
union()
intersect()
setdiff()
is.element(elem1, set10) # elem1 %in% set10
12/10/2016 99
4.1. funciones para strings
4.1. Adicionales:
Paste
> paste(c("q"), 1:4, sep="")
[1] "q1" "q2" "q3" "q4"
> paste(c("q"), 1:4, sep="-")
[1] "q-1" "q-2" "q-3" "q-4«
> paste(1:5, collapse = "")
[1] "12345"
final, cada argumento original se separa del siguiente por un espacio
en blanco, aunque ello puede cambiarse utilizando el
argumento sep="cadena", que sustituye el espacio en blanco por
cadena, la cual podría ser incluso vacía.
12/10/2016 100
Ejercicios
• [Ejercicio] A la secuencia de números realizada anteriormente ha
decidido colocarle el trimestre al que corresponde cada mes,
obteniendo el siguiente resultado, modifique el código de forma que los
quintiles aparezcan de forma correcta y luego imprima los resultados.
> datos<-cbind(anios, mes, dic, ultri)
> quintiles<-paste(c("q"), 1:4, sep="")
> data.frame(datos, quintiles)
quintiles<-rep(paste(c("q"), 1:4, sep=""), each=3)
12/10/2016 101
• Es un operador de igualdad parcial:
> clrs <- c("blue", "black", "brown", "beige", "berry", "bronze",
"blue-green", "blueberry")
> dfx = data.frame(Velocity=sample(100, 8), Colors=clrs)
> dfx
Velocity Colors
1 67 blue
2 52 black
3 55 brown
4 65 beige
5 87 berry
6 27 bronze
7 69 blue-green
8 43 blueberry
> ndx <- grep('^be.*?' , dfx$Colors, perl=T)
> dfx[ndx,]
12/10/2016 102
4.1. Operadores especiales
%like% | grep
Tomado de: http://stackoverflow.com/questions/3539826/whats-the-r-equivalent-of-sqls-like-description-statement
* 0 o más carac…
+ 1 o más carac…
> # solo que tenga la w
> ndx <- grep"[f-k]", dfx$Colors, perl=T)
> dfx[ndx,]
Velocity Colors
2 52 black
4 65 beige
7 69 blue-green
> # solo que tenga la w
> ndx <- grep"[w]", dfx$Colors, perl=T)
> dfx[ndx,]
Velocity Colors
3 55 brown
> # solo aquella que tenga un guión
> dfx[grep("[-]" , dfx$Colors, perl=T), ]
Velocity Colors
7 69 blue-green
12/10/2016 103
4.1. Operadores especiales:
%like% | grep
"^[a-c].*" #empieza
con una letra de la
“a” a la “c”
• También podemos utilizar la función con valores:
> el_panita<-c(8057,8546,4586,5698,4065)
> grep,1:10)
> grep(4,el_panita)
[1] 2 3 5
> el_panita[ grep(4,el_panita)]
[1] 8546 4586 4065
> el_panita[grep("^4.*",el_panita)]
[1] 4586 4065
> el_panita[grep("8$",el_panita)]
[1] 5698 #$ para terminado en.
12/10/2016 104
3.5. Operadores especiales en R:
%like% | grep valores
• Esta función permite cambiar los valores contenido en
un objeto de carácter cadena, la sintaxis de la función es
la siguiente:
chartr(old, new, x)
> chartr("a","A", "tragabala")
[1] "trAgAbAlA“
#ojo, las letras no se consideran conjunta
> > chartr("al","AL", "tragabala")
[1] "trAgAbALA"
12/10/2016 105
4.1. Traslación de caracteres:
chartr()
• En muchas ocasiones necesitamos imprimir resultados:
> my_caracter<-'Somos tragabala'
> print(my_caracter)
[1] "Somos tragabala“
> print(my_caracter, quote=F)
[1] Somos tragabala
12/10/2016 106
3.5. Operadores imprimiendo
12/10/2016 107
4.1. Valores perdidos
• R indica los valores desconocidos (missing) mediante el valor
NA.
• La función is.as() permite saber si un vector tiene
valores desconocidos
> is.na(c(1:3, NA, 10, 11, NA))
[1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE
#toma solo los valores
vector<-c(1:3, NA, 10, 11, NA)
vector[!is.na(c(1:3, NA, 10, 11, NA))]
12/10/2016 108
• [Ejercicio 1.36.] Utiliza alguna función que te permita
contabilizar el número de valores perdidos en el vector x<-
c(1:4, NA, NA, 10, NA).
sum(is.na(x))
[1] 3
#Alt. 2
sum(x, na.rm = TRUE)
• [Ejercicio 1.37.] Utilice la indexación lógica para a partir de un
vector que identifique los valores perdidos, elimines los datos
faltantes en el vector x<-c(1:4, NA, NA, 10, NA).
> x[!is.na(x)]
[1] 1 2 3 4 10
12/10/2016 109
Ejercicios de clases:
• [Ejercicio 1.38.] Dado el vector:
V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8))
Utilice la función as.na() para contar la cantidad de valores
perdidos que se encuentran en el vector, luego elimine los na del
vector.
V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8))
is.na(v1)
> v1[is.na(v1) == F]
[1] 2.1 1.4 6.0 3.5 8.0
12/10/2016 110
Ejercicios de clases:
4.2. Valores perdidos:
Data.frame
• Cuando trabajamos con bases de datos, también podemos
dejar de considerar las filas donde se presenta algún dato
faltante, por ejemplo:
> airquality[1:6,]
Ozone Solar.R Wind Temp Month Day
1 41 190 7.4 67 5 1
2 36 118 8.0 72 5 2
3 12 149 12.6 74 5 3
4 18 313 11.5 62 5 4
5 NA NA 14.3 56 5 5
6 28 NA 14.9 66 5 6
> airquality[complete.cases(airquality),][1:6,]
12/10/2016 111
4. Adicionales
12/10/2016 112
4.2. Precedencia
12/10/2016 113
• Orden de importancia de mayor a menor
- Funciones y expresiones agrupadas
- Operaciones indexadas
- Aritméticas
- Comparación
- Formulas
- Asignación
- Ayuda
12/10/2016 114
4.2. Adicionales:
precedencia
4.3. Exportar datos a Excel o .PDF
12/10/2016 115
4.2. Adicionales:
Exportar a Excel
• Por último, muchas veces completar la automatización de tareas
requieres exportar nuestros resultados a Excel. En R dicho
procedimiento se puede realizar mediante la siguiente línea de
código:
save(prueba, file="datanew.rda") #guardamos format.R
write.csv(prueba, file="datanew.csv") #guardamos CSV
• Para guardarlo directamente en Excel usaremos el paquete xlsReadWrite
install.packages("xlsReadWrite")
library(xlsReadWrite)
paquetewrite.xls(prueba,file="datanew.xls",sheet=“sheet1")
12/10/2016 116
4.2. Adicionales:
Exportar a pdf
# Doy un nombre al archivo que contendrá el "output" en .pdf
pdf(“Nerys_hist.pdf")
# Genero 20,000 números normales y hago un histograma
hist(rnorm(20000))
# Cierro el archivo
dev.off()
12/10/2016 117
12/10/2016 118
Referencias
• Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth &
Brooks/Cole.
• Bravo, F. “Análisis exploratorio en R”. 2013
• Conesa, D. 2013: “Curso introduccion R”. Universidad de Valencia, Dept. de estadística e
investigación operativa. Valencia, España.
(http://www.uv.es/conesa/CursoR/material/handout-sesion2.pdf)
• Contreras J.M., Molina E. y Arteaga P. “Introducción a la programación estadística con R”
• Dalgaard, P. “Introductory Statistics with R”. Second Edition. University of Copenhagen. 2008
• Matloff, N. “The Art of R Programming”. 2009
• Narayanachar, P.; Ramaiah, S and Manjunath, B.G. “A course in Statistics with R”. Wiley. This
edition first published 2016
• Santana (2013). “El Arte de Programar en R”
12/10/2016 119
GRACIAS!!!
Nerys Ramírez
Septiembre 2016
12/10/2016 120

Más contenido relacionado

La actualidad más candente

Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
Alvaro Enrique Ruano
 
Simulacion de pi - monte carlo - buffon java
Simulacion de pi - monte carlo - buffon  javaSimulacion de pi - monte carlo - buffon  java
Simulacion de pi - monte carlo - buffon java
Nestor Paucar Carhuatanta
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
Victor Quintero
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosGeovanny Yungán
 
Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en RRosa E Padilla
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacionalLuis Jherry
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
jimmy Apanu Inoach
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especiales
Anel Sosa
 
Distribuciòn muestral de la media.
Distribuciòn muestral de la media.Distribuciòn muestral de la media.
Distribuciòn muestral de la media.maryanbalmaceda
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoRosbelia Balza
 
Calculo relacional
Calculo relacionalCalculo relacional
Calculo relacional
thalia margarita serrano diaz
 
Regresión Lineal
Regresión LinealRegresión Lineal
Regresión Lineal
Edgar Ortiz
 
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNINTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
mellcv
 
18. Regresión Lineal
18. Regresión Lineal18. Regresión Lineal
18. Regresión Lineal
Juan de Dios Díaz Rosales
 
Herramientas De Modelado
Herramientas De ModeladoHerramientas De Modelado
Herramientas De Modeladomsc080277
 
Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcion
Israel Castillo Cruz
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
claudyabra
 
Grafos
GrafosGrafos
Grafos
drakul09
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
eveTalavera
 
Pruebas de bondad de ajuste
Pruebas de bondad de ajustePruebas de bondad de ajuste
Pruebas de bondad de ajuste
Lupita Rodríguez
 

La actualidad más candente (20)

Recursividad directa e indirecta
Recursividad directa e indirectaRecursividad directa e indirecta
Recursividad directa e indirecta
 
Simulacion de pi - monte carlo - buffon java
Simulacion de pi - monte carlo - buffon  javaSimulacion de pi - monte carlo - buffon  java
Simulacion de pi - monte carlo - buffon java
 
Modelo relacional
Modelo relacionalModelo relacional
Modelo relacional
 
P. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetosP. estructurada vs. programación orientada a objetos
P. estructurada vs. programación orientada a objetos
 
Introducción a la Programación en R
Introducción a la Programación en RIntroducción a la Programación en R
Introducción a la Programación en R
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Procedimientos especiales
Procedimientos especialesProcedimientos especiales
Procedimientos especiales
 
Distribuciòn muestral de la media.
Distribuciòn muestral de la media.Distribuciòn muestral de la media.
Distribuciòn muestral de la media.
 
Estructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigoEstructuras repetitivas - pseudocodigo
Estructuras repetitivas - pseudocodigo
 
Calculo relacional
Calculo relacionalCalculo relacional
Calculo relacional
 
Regresión Lineal
Regresión LinealRegresión Lineal
Regresión Lineal
 
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓNINTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
INTERACCIÓN ENTRE CLASES, GENERALIZACIÓN
 
18. Regresión Lineal
18. Regresión Lineal18. Regresión Lineal
18. Regresión Lineal
 
Herramientas De Modelado
Herramientas De ModeladoHerramientas De Modelado
Herramientas De Modelado
 
Lenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcionLenguajes lógicos definicion y funcion
Lenguajes lógicos definicion y funcion
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Grafos
GrafosGrafos
Grafos
 
Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
Pruebas de bondad de ajuste
Pruebas de bondad de ajustePruebas de bondad de ajuste
Pruebas de bondad de ajuste
 

Destacado

LENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION RLENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION R
Shirley Armas
 
Multiplicación Árabe
Multiplicación ÁrabeMultiplicación Árabe
Multiplicación Árabe
nosolomates
 
Seguridad en las comunicaciones móviles - Hack&Beers Valencia
Seguridad en las comunicaciones móviles - Hack&Beers ValenciaSeguridad en las comunicaciones móviles - Hack&Beers Valencia
Seguridad en las comunicaciones móviles - Hack&Beers Valencia
Alex Casanova
 
SEBASTIAN_CRESPO MANUAL R
SEBASTIAN_CRESPO MANUAL RSEBASTIAN_CRESPO MANUAL R
SEBASTIAN_CRESPO MANUAL R
Sebastian Crespo
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Luis Pons
 
MULTIPLICACIÓN EN CUADRÍCULA
MULTIPLICACIÓN EN CUADRÍCULAMULTIPLICACIÓN EN CUADRÍCULA
MULTIPLICACIÓN EN CUADRÍCULA
Olman Salazar
 
Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6
Luis Fernando Aguas Bucheli
 
Introduccion al Programa R
Introduccion al Programa RIntroduccion al Programa R
Introduccion al Programa R
Dr. Orville M. Disdier
 
Algebra lineal 1. sistemas de ecuaciones lineales
Algebra lineal 1. sistemas de ecuaciones linealesAlgebra lineal 1. sistemas de ecuaciones lineales
Algebra lineal 1. sistemas de ecuaciones lineales
Edward Ropero
 
Tres tipos de multiplicación
Tres tipos de multiplicaciónTres tipos de multiplicación
Tres tipos de multiplicación
Alvaro Posse
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en r
zasque11
 
Lección 1. Tipos de datos en R
Lección 1. Tipos de datos  en RLección 1. Tipos de datos  en R
Lección 1. Tipos de datos en R
Carlos Pérez Lara
 
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATEDEstadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Dr. Orville M. Disdier
 
Lección 3. Leer un archivo CSV en R
Lección 3. Leer un archivo CSV en RLección 3. Leer un archivo CSV en R
Lección 3. Leer un archivo CSV en R
Carlos Pérez Lara
 
Multiplicación hindú
Multiplicación hindúMultiplicación hindú
Multiplicación hindúRudy-Araya
 
Matrices Y Determinantes
Matrices Y DeterminantesMatrices Y Determinantes
Matrices Y Determinantes
Adan Aguirre
 
Sistemas de Ecuaciones Lineales
Sistemas de Ecuaciones LinealesSistemas de Ecuaciones Lineales
Sistemas de Ecuaciones Lineales
Lucas Alegria
 

Destacado (20)

modelo de sensibilidad
modelo de sensibilidadmodelo de sensibilidad
modelo de sensibilidad
 
LENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION RLENGUAJE DE PROGRAMACION R
LENGUAJE DE PROGRAMACION R
 
Multiplicación Árabe
Multiplicación ÁrabeMultiplicación Árabe
Multiplicación Árabe
 
Horoscopo test1
Horoscopo test1Horoscopo test1
Horoscopo test1
 
Seguridad en las comunicaciones móviles - Hack&Beers Valencia
Seguridad en las comunicaciones móviles - Hack&Beers ValenciaSeguridad en las comunicaciones móviles - Hack&Beers Valencia
Seguridad en las comunicaciones móviles - Hack&Beers Valencia
 
SEBASTIAN_CRESPO MANUAL R
SEBASTIAN_CRESPO MANUAL RSEBASTIAN_CRESPO MANUAL R
SEBASTIAN_CRESPO MANUAL R
 
Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16Introduction to R by David Lucy Cap 12-16
Introduction to R by David Lucy Cap 12-16
 
MULTIPLICACIÓN EN CUADRÍCULA
MULTIPLICACIÓN EN CUADRÍCULAMULTIPLICACIÓN EN CUADRÍCULA
MULTIPLICACIÓN EN CUADRÍCULA
 
Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6Estadística con Lenguaje R: Sesión 6
Estadística con Lenguaje R: Sesión 6
 
Introduccion al Programa R
Introduccion al Programa RIntroduccion al Programa R
Introduccion al Programa R
 
Algebra lineal 1. sistemas de ecuaciones lineales
Algebra lineal 1. sistemas de ecuaciones linealesAlgebra lineal 1. sistemas de ecuaciones lineales
Algebra lineal 1. sistemas de ecuaciones lineales
 
Tres tipos de multiplicación
Tres tipos de multiplicaciónTres tipos de multiplicación
Tres tipos de multiplicación
 
Ejercicios resueltos en r
Ejercicios resueltos en rEjercicios resueltos en r
Ejercicios resueltos en r
 
Lección 1. Tipos de datos en R
Lección 1. Tipos de datos  en RLección 1. Tipos de datos  en R
Lección 1. Tipos de datos en R
 
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATEDEstadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
Estadisticas Descriptivas e Inferencia utilizando R (Taller Intermedio) UPDATED
 
Lección 3. Leer un archivo CSV en R
Lección 3. Leer un archivo CSV en RLección 3. Leer un archivo CSV en R
Lección 3. Leer un archivo CSV en R
 
Multiplicación hindú
Multiplicación hindúMultiplicación hindú
Multiplicación hindú
 
Cómo citar ieee
Cómo citar   ieeeCómo citar   ieee
Cómo citar ieee
 
Matrices Y Determinantes
Matrices Y DeterminantesMatrices Y Determinantes
Matrices Y Determinantes
 
Sistemas de Ecuaciones Lineales
Sistemas de Ecuaciones LinealesSistemas de Ecuaciones Lineales
Sistemas de Ecuaciones Lineales
 

Similar a Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)

Articulo en r
Articulo en rArticulo en r
Articulo en r
Nasly Reyes Payares
 
clases de herramientas lorenita
clases de herramientas lorenitaclases de herramientas lorenita
clases de herramientas lorenita
Lorenita Gonzales Rivera
 
Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1
Luis Fernando Aguas Bucheli
 
R Introducción
R IntroducciónR Introducción
R Introducción
Luis Alan Navarro
 
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Nicolas Robinson-Garcia
 
Tp1 2006
Tp1 2006Tp1 2006
Tp1 2006
Luis Raigoso
 
R manual
R manualR manual
R manual
fre1305
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.
Mayra Almache
 
Pascal
PascalPascal
Entorno y lenguaje de programación R
Entorno  y lenguaje de programación REntorno  y lenguaje de programación R
Entorno y lenguaje de programación R
travon1
 
Semana 1 guia1 - fundamentos de programacion
Semana 1   guia1 - fundamentos de programacionSemana 1   guia1 - fundamentos de programacion
Semana 1 guia1 - fundamentos de programacion
Paolo Vizcarra
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
alancardona3
 
ESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICASESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICAS
Sara Sofía Imbachí Nieto
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
alancardona3
 
Tecno
TecnoTecno
Estructuras basicas
Estructuras basicasEstructuras basicas
Estructuras basicas
AlejandroLozada20
 
Programacion
 Programacion  Programacion
Programacion
Alberto Jacome
 

Similar a Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos) (20)

Articulo en r
Articulo en rArticulo en r
Articulo en r
 
clases de herramientas lorenita
clases de herramientas lorenitaclases de herramientas lorenita
clases de herramientas lorenita
 
Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1Estadística con Lenguaje R: Sesión 1
Estadística con Lenguaje R: Sesión 1
 
R Introducción
R IntroducciónR Introducción
R Introducción
 
Curso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias SocialesCurso básico de lenguaje R aplicado a las Ciencias Sociales
Curso básico de lenguaje R aplicado a las Ciencias Sociales
 
Tp1 2006
Tp1 2006Tp1 2006
Tp1 2006
 
R manual
R manualR manual
R manual
 
Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.Deber n° 09 lenguajes de programación.
Deber n° 09 lenguajes de programación.
 
Pascal
PascalPascal
Pascal
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
Entorno y lenguaje de programación R
Entorno  y lenguaje de programación REntorno  y lenguaje de programación R
Entorno y lenguaje de programación R
 
Semana 1 guia1 - fundamentos de programacion
Semana 1   guia1 - fundamentos de programacionSemana 1   guia1 - fundamentos de programacion
Semana 1 guia1 - fundamentos de programacion
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
ESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICASESTRUCTURAS BÁSICAS
ESTRUCTURAS BÁSICAS
 
Estructuras básicas
Estructuras básicas Estructuras básicas
Estructuras básicas
 
Tecno
TecnoTecno
Tecno
 
Estructuras basicas
Estructuras basicasEstructuras basicas
Estructuras basicas
 
Programacion
 Programacion  Programacion
Programacion
 
(1) Curso sobre el software estadístico R. Introducción al entorno R
(1) Curso sobre el software estadístico R. Introducción al entorno R(1) Curso sobre el software estadístico R. Introducción al entorno R
(1) Curso sobre el software estadístico R. Introducción al entorno R
 

Más de Nerys Ramírez Mordán

Clase14 Evaluación de políticas públicas
Clase14 Evaluación de políticas públicasClase14 Evaluación de políticas públicas
Clase14 Evaluación de políticas públicas
Nerys Ramírez Mordán
 
Clase13 Modelos de variables dependientes limitadas
Clase13 Modelos de variables dependientes limitadasClase13 Modelos de variables dependientes limitadas
Clase13 Modelos de variables dependientes limitadas
Nerys Ramírez Mordán
 
Clase12 heterocedasticidad
Clase12 heterocedasticidadClase12 heterocedasticidad
Clase12 heterocedasticidad
Nerys Ramírez Mordán
 
Clase11 Método Mle y momentos
Clase11 Método Mle y momentosClase11 Método Mle y momentos
Clase11 Método Mle y momentos
Nerys Ramírez Mordán
 
Clase10 Endogeneidad y estimación por variables instrumentales
Clase10 Endogeneidad y estimación por variables instrumentalesClase10 Endogeneidad y estimación por variables instrumentales
Clase10 Endogeneidad y estimación por variables instrumentales
Nerys Ramírez Mordán
 
Clase9 Esperanza condicional y modelo de regresión
Clase9 Esperanza condicional y modelo de regresión Clase9 Esperanza condicional y modelo de regresión
Clase9 Esperanza condicional y modelo de regresión
Nerys Ramírez Mordán
 
Clase7 Supuestos del modelo de regresión
Clase7 Supuestos del modelo de regresiónClase7 Supuestos del modelo de regresión
Clase7 Supuestos del modelo de regresión
Nerys Ramírez Mordán
 
Clase6 Selección del modelo y problemas de datos
Clase6 Selección del modelo y problemas de datosClase6 Selección del modelo y problemas de datos
Clase6 Selección del modelo y problemas de datos
Nerys Ramírez Mordán
 
Clase5 Formas funcionales
Clase5 Formas funcionalesClase5 Formas funcionales
Clase5 Formas funcionales
Nerys Ramírez Mordán
 
Clase4 Test de hipótesis en el modelo de regresión
Clase4 Test de hipótesis en el modelo de regresiónClase4 Test de hipótesis en el modelo de regresión
Clase4 Test de hipótesis en el modelo de regresión
Nerys Ramírez Mordán
 
Clase3 El modelo de regresión múltiple
Clase3 El modelo de regresión múltipleClase3 El modelo de regresión múltiple
Clase3 El modelo de regresión múltiple
Nerys Ramírez Mordán
 
Clase2 El modelo de regresión simple
Clase2 El modelo de regresión simpleClase2 El modelo de regresión simple
Clase2 El modelo de regresión simple
Nerys Ramírez Mordán
 
Clase1. Naturaleza del análisis econométrico y preliminares estadísticos
Clase1. Naturaleza del análisis econométrico y preliminares estadísticosClase1. Naturaleza del análisis econométrico y preliminares estadísticos
Clase1. Naturaleza del análisis econométrico y preliminares estadísticos
Nerys Ramírez Mordán
 
Clase1. introducción a matlab
Clase1. introducción a matlabClase1. introducción a matlab
Clase1. introducción a matlab
Nerys Ramírez Mordán
 

Más de Nerys Ramírez Mordán (14)

Clase14 Evaluación de políticas públicas
Clase14 Evaluación de políticas públicasClase14 Evaluación de políticas públicas
Clase14 Evaluación de políticas públicas
 
Clase13 Modelos de variables dependientes limitadas
Clase13 Modelos de variables dependientes limitadasClase13 Modelos de variables dependientes limitadas
Clase13 Modelos de variables dependientes limitadas
 
Clase12 heterocedasticidad
Clase12 heterocedasticidadClase12 heterocedasticidad
Clase12 heterocedasticidad
 
Clase11 Método Mle y momentos
Clase11 Método Mle y momentosClase11 Método Mle y momentos
Clase11 Método Mle y momentos
 
Clase10 Endogeneidad y estimación por variables instrumentales
Clase10 Endogeneidad y estimación por variables instrumentalesClase10 Endogeneidad y estimación por variables instrumentales
Clase10 Endogeneidad y estimación por variables instrumentales
 
Clase9 Esperanza condicional y modelo de regresión
Clase9 Esperanza condicional y modelo de regresión Clase9 Esperanza condicional y modelo de regresión
Clase9 Esperanza condicional y modelo de regresión
 
Clase7 Supuestos del modelo de regresión
Clase7 Supuestos del modelo de regresiónClase7 Supuestos del modelo de regresión
Clase7 Supuestos del modelo de regresión
 
Clase6 Selección del modelo y problemas de datos
Clase6 Selección del modelo y problemas de datosClase6 Selección del modelo y problemas de datos
Clase6 Selección del modelo y problemas de datos
 
Clase5 Formas funcionales
Clase5 Formas funcionalesClase5 Formas funcionales
Clase5 Formas funcionales
 
Clase4 Test de hipótesis en el modelo de regresión
Clase4 Test de hipótesis en el modelo de regresiónClase4 Test de hipótesis en el modelo de regresión
Clase4 Test de hipótesis en el modelo de regresión
 
Clase3 El modelo de regresión múltiple
Clase3 El modelo de regresión múltipleClase3 El modelo de regresión múltiple
Clase3 El modelo de regresión múltiple
 
Clase2 El modelo de regresión simple
Clase2 El modelo de regresión simpleClase2 El modelo de regresión simple
Clase2 El modelo de regresión simple
 
Clase1. Naturaleza del análisis econométrico y preliminares estadísticos
Clase1. Naturaleza del análisis econométrico y preliminares estadísticosClase1. Naturaleza del análisis econométrico y preliminares estadísticos
Clase1. Naturaleza del análisis econométrico y preliminares estadísticos
 
Clase1. introducción a matlab
Clase1. introducción a matlabClase1. introducción a matlab
Clase1. introducción a matlab
 

Último

Instituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdfInstituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdf
JC Díaz Herrera
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
hlscomunicaciones
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
ReAViILICo
 
Flujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotelFlujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotel
f4llenangel345
 
Morfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCSMorfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCS
LisaCinnamoroll
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
JosMuoz943377
 
Pobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicagPobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicag
jairoperezjpnazca
 
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
EliseoLuisRamrez
 
Diagnóstico Institucional en psicologia.docx
Diagnóstico  Institucional en psicologia.docxDiagnóstico  Institucional en psicologia.docx
Diagnóstico Institucional en psicologia.docx
cabreraelian69
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
ManuelaReina3
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
LizetTiradoRodriguez
 
Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
franciscasalinaspobl
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
JaimeYael
 
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNATREGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
yafethcarrillo
 
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptxSISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
mogollonespinoza17
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
Maria Apellidos
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
JC Díaz Herrera
 
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdfPaíses_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
JC Díaz Herrera
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
floralbaortega88
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
Observatorio Vitivinícola Argentino
 

Último (20)

Instituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdfInstituciones financieras globales por efectivo disponible (2024).pdf
Instituciones financieras globales por efectivo disponible (2024).pdf
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
 
Flujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotelFlujograma: Reserva de habitación en un hotel
Flujograma: Reserva de habitación en un hotel
 
Morfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCSMorfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCS
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
 
Pobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicagPobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicag
 
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
1- PRESENTACION DE ORIENTACIONES DE LA ORDENANZA 04-2023.11.04.24.pptx
 
Diagnóstico Institucional en psicologia.docx
Diagnóstico  Institucional en psicologia.docxDiagnóstico  Institucional en psicologia.docx
Diagnóstico Institucional en psicologia.docx
 
Desarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamientoDesarrollo de habilidades de pensamiento
Desarrollo de habilidades de pensamiento
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
 
Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
 
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNATREGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
REGIMEN MYPE TRIBUTARIO HECHO PARA APORTES PARA LA SUNAT
 
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptxSISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
SISTEMA PRIVADO DE PENSIONES- de la cruz.pptx
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
 
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdfPaíses_por_participacion_porcentual_en_el PNB global (2024) .pdf
Países_por_participacion_porcentual_en_el PNB global (2024) .pdf
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
 

Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)

  • 1. Introducción al lenguaje R 1. Datos y Operadores Básicos Nerys Ramírez Universidad Autonomía de Santo Domingo 12/10/2016 1
  • 2. Contenido Objetivos 1. Introducción 1.1. Instalación y actualización 1.2. Interfaz 1.3. Ayuda 2. Tipos de Objetos, vectores y matrices 2.1. Tipos de objeto 2.2. Vectores 2.3. Factores 2.4. Matrices 2.5. Data.Frame 2.6. Vectores indexados 3. Operadores 3.1. Aritméticos 3.2. Relacionales 3.3. Lógicos y filtros 3.4. Colon 3.5. Especiales: in 4. Strings 5. Valores perdidos 6. Adicionales 4.1. Precedencia 4.3. Exportar datos a Excel 4.4. Ejercicios finales Referencias 12/10/2016 2
  • 4. Por qué R? Fuente: 12/10/2016 4  Es gratis.  Curva de aprendizaje plana, pero con alta potencia.  Es flexible.  Se actualiza constantemente, contrario a los programas comerciales tradicionales.  Alto alcance.  Incorporación anticipada de técnicas estadísticas. “R es el lenguaje de programación estadístico más potente y más flexible del planeta” (Norman Nie, co fundador de SPSS)
  • 5. Objetivo y motivación Siempre el objetivos es poder reproducir el trabajo en el futuro, modificando los menos posible el código, entres las aplicaciones de la programar rutinas nos encontramos: – En Boxjenkins necesitamos determinar la estructura ARIMA(p,I,d) de series univariadas, en tal sentido, necesitamos estimar los parámetros correspondiente al modelo, podemos hacer que R tome la decisión de una cantidad importante de series. – El orden de integración. – Guardar resultados de ecuaciones y secuencias basados en matrices. 12/10/2016 5
  • 6. Objetivo y motivación • Entenderemos esto: V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8)) is.na(v1) > v1[is.na(v1) == F] [1] 2.1 1.4 6.0 3.5 8.0 12/10/2016 6
  • 8. 1.1. Introducción • R es un dialecto de lenguaje S, case-sensitive, que inicialmente se desarrolló como una serie de versiones de fortran. El mismo permite una gran cantidad de funciones estadísticas básicas que se encuentran predeterminadas y la creación de funciones. • R es un lenguaje de programación de distribución libre creado en 1993 por Ross Ihaka y Robert Gentleman. Que funciona como ambiente en el que se aplican técnicas estadísticas en lugar de una acumulación gradual de herramientas muy específicas y poco flexibles (Santana y Farfáan, 2014). 12/10/2016 8
  • 9. 1.1. Instalación y actualización • Para instalar R se visita el siguiente sitio: https://www.r-project.org/ • Actualizar: install.packages("installr") setInternet2(TRUE) installr::updateR() # actualizar R. Las actualizaciones incluyen cambios y mejoras pero puede hacer disfuncional los programas ya realizados. 12/10/2016 9
  • 10. 1.2. Introducción: interfaz R funciona como una calculadora. > # Calculate 3 + 4 > 3 + 4 [1] 7 No obstante, es recomendable guardar los resultados un objeto para poder automatizar procesos. > # Calculate 3 + 4 > myResults<-3 + 4 > myResults [1] 7 Permite ver script, comandos, variables y objetos, paquetes cargados, gráficos 12/10/2016 10
  • 11. • Cuando introduces una expresión en la línea de comandos y das ENTER, R evalúa la expresión y muestra el resultado. Por tanto, R puede ser usado como una calculadora, ya que realiza operaciones aritméticas, además de operaciones lógicas. > 5*6 [1] 30 • imprime el resultado. Sin embargo, R es un lenguaje de programación y normalmente la razón por la que usas éstos es para automatizar los proceso y evitar la repetición innecesaria. Por tanto, puedes guardar los resultados anteriores en otro cálculo. • La manera de asignar un valor a una variable en R es usar el operador de asignación (<-). Es equivalente a generar una variable. > mi_result<-5*6 IMPORTANTE: Hay que acostumbrarse a no usar “=” 1.2. Introducción: interfaz 12/10/2016 11
  • 12. • [Ejercicio 1.1.] Acaban de ofrecerte el precio de un producto ($130) cuyo pago en efectivo aplica un descuento del 10%, calcula el precio final a pagar luego del descuento y guardalo en un objeto llamado pre_art1. Posteriormente, obtén el precio total a pagar, conociendo que tenias un carrito con valor de $500. > pre_art1 <-130*0.9 > pre_art1 + 500 [1] 617 • Historial de comandos: Mediante el teclado (flechas) se puede acceder a los últimos comandos ejecutados. Ejercicio de clases: 12/10/2016 12
  • 13. 1.3. Introducción: uso > 12+8+15+17+13+20+20 [1] 105 > 105/7 [1] 15 > (12+8+15+17+13+20+20)/7 [1] 15 > d<-c(12,8,15,17,13,20,20) sum(d) [1] 105 > length(d) [1] 7 > sum(d)/length(d) [1] 15 > mean(d) [1] 15 #También podemos componer funciones length(mean(d)) Tomado de Andrés Guerrero > Un ejemplo del uso completo (entendamos la idea) > # Calculo de la media aritmética de 7 números 12/10/2016 13
  • 14. • Las expresiones de asignación. Observemos por ejemplo qué pasa con la siguiente expresión: > x <- y Error: object "y" not found • “R se ha quejado de la inexistencia del símbolo “y”, pero no se ha quejado de la inexistencia del símbolo “x”. esto porque símbolo a la izquierda de la asignación se emplea para la escritura de un objeto al que hace referencia y, si no existe, esto equivale a lo que sería la definición de una variable en otros lenguajes. En cambio, el símbolo o símbolos que aparecen a la derecha son de lectura y por lo tanto se presupone su existencia o definición previa.” (Santana, 2011) 1.3. Introducción: visibilidad del código 12/10/2016 14
  • 15. • Case sensitivity: distingue entre mayúsculas y minúsculas. • getwd() nos devuelve el directorio de trabajo y el comando setwd() nos permite modificarlo. setwd("C:/Users/Nerys Ramierz/Dropbox/Curso R") • Guarda workspace modificado save.image(“workspace1”) 12/10/2016 15 1.3. Introducción: directorio de trabajo
  • 16. • Como apreciaron, en la interfaz tradicional los objetos creados no se visualizan de la forma tradicional, tal como sucede en programas como Excel, pero existen algunos comandos iniciales que nos permites visualizarlos: > myResults [1] 7 > ls() #lista los objetos en memoria > ls(pat=n) #listar objetos con algún característica > rm(list=ls()) #Borra todos los objetos en memoria 12/10/2016 16 1.4. Introducción: visualizar objetos
  • 17. • Muchas herramientas de R no están disponible directamente, no obstante, podemos contar con ella mediante librerías. La forma correcta de adherirlas al programa es: Install.packeges(ggplot2) library(ggplot2) • Cada paquete, por lo general, tiene un archivo de ayuda que permite estudiar sus funciones y utilidad. 12/10/2016 17 1.5. Introducción: paquetes
  • 18. • En R encontrarás un menú de recursos, entre los cuales se encuentran manuales, referencias y demás material para co menzar a aprender R. Ayuda sobre comandos Ayuda sobre temas help(print) help.search("print") ?print ??regression help.search("regression") • También puedes obtener ejemplos del uso de funciones con la función, Con eso tendrás una idea de lo que puedes hacer con esta función. example("read.table") args(sqrt) 12/10/2016 18 1.4. Introducción: ayuda
  • 19. 1.4. Introducción: Datos pre-instalados • R dispone de bases de datos pre-instaladas que nos permiten ir practicando en la medida que avanzamos. El siguiente código, lista todas las bases pre-instaladas. data(package=.packages(all.available=TRUE)) 12/10/2016 19
  • 20. 2. Tipos de objetos: vectores y matrices 12/10/2016 20 En algún lugar de este apartado puedes necesitar saber usar los operadores de R, en tal caso busca ayuda en el apartado 3.
  • 21. 2.1. Tipos de objetos • Los objetos se pueden clasificar en dos grupos: – Atómicos: todos los elementos son del mismo tipo (vectores y matrices) – Recursivos: pueden combinar una colección de objetos diferentes. (dataframe, listas) • Todas las cosas que manipula R se llaman objetos. los mismo pueden ser de diversos tipos y tener diferentes tipos de datos. En general, éstos se construyen a partir de objetos más simples y se definen con el operador de asignación (<-). Existen 5 tipos de objetos: 1. Caracteres (letras). Estas expresiones se denotan entre comillas. 2. Numéricos. 3. Interger. Es numérico, pero ocupa menos memorias. 4. Complex. Permite representar números complejos. 5. Logical. 12/10/2016 21
  • 22. 1. Caracteres (letras). Estas expresiones se denotan entre comillas. Es cualquier cadena de caracteres alfanuméricos. Deben introducirse entre comillas (si ", no “). Para convertir cualquier número en una caden a de caracteres se utiliza el comando as.character(). x <- c("a", "b", "c") class(x) nombres<-c(“Maria”, “Jesus”) 12/10/2016 22 2.1. Tipos de objetos
  • 23. 1. Numérico. Es el tipo de dato con mayor importancia. El mismo permite almacenar vectores y matrices. x <- c(1,2,3,4,5) 12/10/2016 23 2.1. Tipos de objetos
  • 24. • Lógicos. También hay objetos lógicos (logic) que representan los valores lógicos falso y verdadero. En R el valor falso se representan por FALSE únicamente por la letra F mayúscula; de la misma manera, el valor lógico verdadero es representado por la instrucción TRUE (=1) o por la letra T. • Permiten: – Calcular proporciones – Calcular dummys – Indexar variables para acceder a posiciones de vectores – Vectorizar operaciones – … 12/10/2016 24 2.1. Tipos de objetos
  • 25. • [Ejercicio 1.2.] crea una variable llamada ‘colores’ que contenga un vector con las cadenas "rojo", "azul", "verde", "azul", "rojo", en ese orden. • [Ejercicio 1.3.] definido el vector x<-c(1,2,3,4,5) verifique para que se utiliza la función class(x). • [Ejercicio 1.4.] definido el vector lógico x<-c(T,T,F,F,T) genera un vector numérico, utilizando la función as.numeric(x). Identifique que valores son 1 y cuales 0. Ejercicios de clases: 12/10/2016 25
  • 27. 2.2. Vectores: numéricos • El vector es el objeto más simple en R, es una colección ordenada de número. R puedes construir vectores más largos usando la función c(). (todos sus elementos son iguales) c(2, 3, 5) [1] 2 3 5 • La función c() sirve para concatenar varios elementos del mismo tipo: v <- c(8, 7, -3, 2, 182) assign(“v", c(8, 7, -3, 2, 182)) 12/10/2016 27
  • 28. • Otra característica interesante de este lenguaje, es que permite dar nombre y acceder por medio de ese nombre a los elementos individuales de un vector. frutas <- c(15, 100, 2, 30) names(frutas) <- c("naranja", "pera", "manzana", "durazno") > frutas["naranja"] naranja 15 12/10/2016 28 2.2. Vectores: numéricos con nombres
  • 29. • [Ejercicio 1.5.] El número de clientes atendidos por un peluquero durante la semana es 45,43,56,48,51, crea un vector llamado v y asígnale un nombre a cada día registrado, iniciando por el lunes, luego imprima los nombres: > v <- c(45,43,56,48,51) > names(v) <- c("Lun", "Mar", "Mie", "Jue", "Vie") Lun Mar Mie Jue Vie 45 43 56 48 51 > names(v) [1] "Lun" "Mar" "Mie" "Jue" "Vie" 12/10/2016 29 Ejercicios de clases:
  • 30. 2.2. Vectores: Secuencias y repeticiones • Otra característica interesante de este lenguaje, es que permite dar nombre realizar secuencias. <-1:20 # del 1 al 20 a<-20:1 # del 20 al 1 a<-seq(1,20) #vector que vaya desde 1 a 20 a<-seq(1,20,by=2) # fijar intervalos de la secuencia a<-seq(1,20,length=12) # fijar longitud de la secuencia • La función rep sirve para generar repeticiones de objetos: a<-1:5; a5<-rep(a,times=5) #repetir un vector n veces a<-1:5; a5<-rep(a,each=5) #repetir cada elemento 5 veces 12/10/2016 30
  • 31. • [Ejercicio 1.6.] Para que se ejecutan las siguientes líneas de código: 1:10 [1] 1 2 3 4 5 6 7 8 9 10 > rep(1:4,2) #repetimos 1:4 dos veces. [1] 1 2 3 4 1 2 3 4 > rep(1:4,each=2) [1] 1 1 2 2 3 3 4 4 #intercalando el resultado. 12/10/2016 31 Ejercicios de clases:
  • 32. • [Ejercicio 1.7.] Dispone de una serie de tiempo de frecuencia mensual en el siguiente espacio temporal 1990-2000, estudias la estacionalidad del mismo por tanto necesita crear las siguientes secuencias: a. Inserte el vector anios y meses asignando a cada mes un número que sea igual al orden que ocupe (ene=1, feb=2,…). b. *Cree una dummy llamada dic que sea igual a 1 if mes=diciembre y cero el resto de los meses. (Pista: vectores lógicos pueden ayudar) c. *Cree otra dummy llamada ulttri que sea igual a 1 durante el ultimo trimestre del año y 0 el resto de los años. d. *Presente una matriz con todos los resutlados. [Pista: cbind] 12/10/2016 32 Ejercicios de clases:
  • 33. #Respuesta ejercicio 1.7. # a. anio<-rep(1990:2000, 12) mes<-rep(1:12, length(anio)/12) #b. dic<-as.numeric(mes==12) #c ultri<-as.numeric(mes==10:12) #d cbind(anios, mes, dic, ultri) 12/10/2016 33 Ejercicios de clases: anios mes dic ultri [1,] 1990 1 0 0 [2,] 1990 2 0 0 [3,] 1990 3 0 0 [4,] 1990 4 0 0 [5,] 1990 5 0 0 [6,] 1990 6 0 0 [7,] 1990 7 0 0 [8,] 1990 8 0 0 [9,] 1990 9 0 0 [10,] 1990 10 0 1 [11,] 1990 11 0 1 [12,] 1990 12 1 1
  • 34. 2.2. Vectores: Funciones útiles Utilizando el siguiente vector: mi_vector <- c(2,5,8,6,7,9,10,15,-1,8) pruebe las siguientes funciones: max(x) Devuelve el elemento máximo del vector. min(x) Devuelve el elemento mínimo del vector. range(x) Devuelve el elemento mínimo y máximo del vector. length(x) Devuelve la dimensión del vector. sum(x) Devuelve la suma de todos los elementos. prod(x) Devuelve el producto de todos los elementos. sort(x, decreasing=T) Devuelve los elementos ordenados. rank(x) [1] 2.0 el primer valor es el segundo más bajo, las posiciones que ocupa cada elemento del vector. diff(x) diferencias absolutas Order(x) [1] 9 1 … el valor más bajo esta en la posición 9 12/10/2016 34
  • 35. [Ejercicio 1.8.] Dado el vector x<-c(8,9,7,4,6,5,7,2,9,8,2,4,7,5): - Calcular el número de elementos. - Obtenga un vector de la diferencia absoluta del vector. - En que posición se encuentra el valor mínimo. - Ordena de menor a mayor. [Ejercicio 1.9.] Cuales son las diferencias entre rank y order. 12/10/2016 35 Ejercicios de clases:
  • 36. 2.2. Vectores: Vector vacio • De mucha utilidad cuando realizamos procedimientos recursivos que luego necesitamos ir completando. vv <- numeric() • Nota: los vectores índices se ven más adelante. 12/10/2016 36
  • 38. 2.3. Factores • Los factores son otro tipo especial de vectores usados para representar datos categóricos, éstos pueden ser ordenados o no. La impresión de un factor muestra información ligeramente diferente a la de un vector de caracteres. En particular, puedes notar que las comillas no son mostradas y que los niveles son explícitamente impresos. > x <- factor(c("Hombre","Mujer","Hombre","Hombre","Mujer")) >x [1] Hombre Mujer Hombre Hombre Mujer Levels: Hombre Mujer ## tabla de frecuencia simple >table(x) x Hombre Mujer 3 2 12/10/2016 38
  • 39. 2.3. Factores ordinales • Se puede asignar un orden para dar sentido ordinal a las variables cualitativas. (DataCamp ejemplos). temperature_vector <- c("High", "Low", "High","Low", "Medium") factor_temperature_vector <- factor(temperature_vector, order = TRUE, levels = c("Low", "Medium", "High")) factor_temperature_vector [1] High Low High Low Medium Levels: Low < Medium < High 12/10/2016 39
  • 40. • [Ejercicio 1.13.] Contabilice, mediante una tabla de frecuencia, la cantidad de a que existe en el siguiente factor [R.4]: x<-factor(c(LETTERS[3:1], rep(LETTERS[1],2), LETTERS[1:1])) > table(x) x A B C 4 1 1 • [Ejercicio 1.14.]* [Guarda resultados] Guarde el número de “A” en un vector llamado tragabala y luego multiplíquelo por dos: > tragabala<-table(x)[1] > tragabala*2 A 8 12/10/2016 40 Ejercicios de clases:
  • 42. 2.4. Matrices • Desde el punto de vista del lenguaje, una matriz es un vector con un atributo adicional. Existen diversas maneras de generar una matriz: > A = matrix( + c(2, 4, 3, 1, 5, 7), # the data elements + nrow=2, # number of rows + ncol=3, # number of columns + byrow = TRUE) # fill matrix by rows x<-matrix(1:12,4,3) matrix(1:12, nrow=4, ncol=3) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 12/10/2016 42
  • 43. • Los datos en R se van rellenando columna a columna de izquierda da derecha. Aunque también se puede especificar el orden deseado. matrix(1:12, nrow=4, ncol=3, byrow=TRUE) matrix(1:12, nrow=4, ncol=3, byrow=FALSE) [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 12/10/2016 43 2.4. Matrices: byrow
  • 44. 2.4. Matrices: nombres de filas y columnas • A las matrices creadas podemos crear nombre y luego acceder a sus elementos a partir de los nombres creado, las funciones para realizar es tarea son colnames y rownames: 12/10/2016 44 x<-matrix(1:12,4,3) >x [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 colnames(x)<-c("edad","peso","altura") rownames(x)<-c("Perla","Carlos","Eva","Alex") > x edad peso altura Perla 1 5 9 Carlos 2 6 10 Eva 3 7 11 Alex 4 8 12
  • 45. • Se pueden combinar matrices de distintas manera, según lo deseado, sea por filas o columnas, usando las funciones rbind() y cbind(). x<-matrix(1:12,4,3) rbind(x, c(1,2,3)) cbind(x, c(1,2,3,4)) [,1] [,2] [,3] [1,] 1 5 9 [2,] 2 6 10 [3,] 3 7 11 [4,] 4 8 12 [5,] 1 2 3 [,1] [,2] [,3] [,4] [1,] 1 5 9 1 [2,] 2 6 10 2 [3,] 3 7 11 3 [4,] 4 8 12 4 12/10/2016 45 2.4. Matrices: agregar filas y columnas Útil para guardar resultados secuenciales.
  • 46. nrow(x), Averiguar el número de filas ncol(x), Averiguar el número de columnas dim(M), dimension de una matriz rowSums() colSums() % _ %, Multiplicar matrices t(x), transponer solve(x), Invertirlas diag(x), Utilizar la diagonal 12/10/2016 46 2.4. Matrices: Funciones útiles Prueba algunas de las funciones con el ejercicio 1
  • 47. • [Ejercicio 1.15.] Dada la siguiente matriz: datos<-matrix(c(20,65,174,22,70,180,19,68,170),nrow=3,byrow=T) dimnames(datos)<-list(c("paco","pepe","kiko"), c("edad","peso","altura")) > datos edad peso altura paco 20 65 174 pepe 22 70 180 kiko 19 68 170 Agrega los datos de feliz (edad=18; peso=81; altura=182) e imprima los resultados en la consola de R. feliz<-c(18,81,182) datos<-rbind(datos,feliz) 12/10/2016 47 Ejercicios de clases: Tomada de: http://halweb.uc3m.es/esp/Personal/personas/jmmarin/esp/ManualR/intro_estructurasdedatos.html
  • 48. • [Ejercicio 1.16.] Anide las funciones diag y sum para calcula la traza de la matriz [my_matriz<-matrix(9,3,3)] my_matriz<-matrix(9,3,3) sum(diag(my_matriz)) [1] 27 12/10/2016 48 Ejercicios de clases:
  • 49. • [Ejercicio 1.16.] [Tomado de Coursera, curso de programación en Matlab] Dado un vector x<-c(1:5), crea una matriz donde la primera columna contenga los elementos de x, la segunda x^2 y la tercera x^3. x<-c(1:3) cbind(x,x^2,x^3) x [1,] 1 1 1 [2,] 2 4 8 [3,] 3 9 27 • [Ejercicio 1.17.]* Realiza el ejercicio anterior con un bucle for. [Pista, codigo Matlab]. for i=1:3 A(:,i)=v.^i; end 12/10/2016 49 Ejercicios de clases: *Anímate a obtener la diagonal principal de la matrix, mediante la función diag(), Puedes obtenerla sin la función y sin bucles? (1:3)^(1:3)
  • 50. • El comando data.entry() permite visualizar una serie de datos en forma de hoja de calculo. x<-c(1:3) y<-cbind(x,x^2,x^3) data.entry(y) 12/10/2016 50 2.4. Matrices: Data.entrys
  • 52. • Los data frames nos permiten visualizar datos de diferentes formatos, tal como lo conocemos en formato Excel o SPSS. – Los componentes deben ser vectores (numéricos, carácter o lógicos). – La longitud de los vectores deben ser la misma. nota<-c(80,98,67,74) nombre<-c("Pedro", "Manuel", "Arix","Vianca") data.frame(nombre, nota, aprobado=nota>70) nombre nota aprobado 1 Pedro 80 TRUE 2 Manuel 98 TRUE 3 Arix 67 FALSE 4 Vianca 74 TRUE 12/10/2016 52 2.5. Data Frames
  • 53. • [Ejercicio 1.17.] Inserte en R un data frame con la siguiente estructura: peso <- c(50,70,45,80,72) altura <- c(160,165,180,190,175) edad <- c(20,40,41,31,33) nombres <- c("Lorena","Manolo","Carmen","Luis","Sara") sexo <- c("M","H","M","H","M") datos <- data.frame(nombres,sexo,peso,altura,edad) datos nombres sexo peso altura edad 1 Lorena M 50 160 20 2 Manolo H 70 165 40 3 Carmen M 45 180 41 4 Luis H 80 190 31 5 Sara M 72 175 33 12/10/2016 53 Ejercicios de clases:
  • 54. • Podemos importar los data.frame desde archivos planos como un txt. Esta es otra forma habitual de cargar dato en R que estén en formato .txt es: datos<- read.table(file="datos.txt", header=TRUE) Nota: Recuerde que si solo coloca el nombre del archivo, acedará al directorio de trabajo en que este trabajando R, en otro caso debe colocar la dirección completa. 12/10/2016 54 2.5. Data Frames Importar archivos planos (.txt)
  • 55. 2.6. Acceso a porciones o subconjuntos de datos y resultados 12/10/2016 55
  • 56. 2.6. Vectores índice • R permite acceder a un elemento de un vector añadiendo el nombre de un vector en un índice entre corchetes []. El vector índice, indica parte de otro vector y puede ser de tres tipos: – Vector de números enteros: son números inter, en caso de ser positivos son concatenados y en caso de ser negativos son omitidos. No hace falta sea de igual longitud al vector seleccionado. – Vector lógico: los valores correspondientes a TRUE son seleccionados, ambos vectores deben ser de igual longitud. – Vector de nombres: solo se aplica cuando el vector tiene el atributo name. 12/10/2016 56
  • 57. • Una vez creado un vector se pueden obtener diversos resultados y ver qué clase de elementos está contenida en el vector. En el siguiente comando se pueden ver algunos ejemplos. # Operaciones con elementos v[4]+v[2] # Guardar los resultados en una posición v[1] <- v[2] - v[5] # Del primer al quinto elemento v[1:5] • El acceso a los elementos individuales de un vector no solamente es para consulta o lectura, sino también para su modificación o escritura. 12/10/2016 57 2.6. Vectores índice: Ejemplos con vectores v<-c(12,13,18,-2,1.8,9,3,4,5,8,9,6,5,4) v[5] # El quinto elemento v[-5] # Todos los elementos, menos el quinto
  • 58. • para quedarnos con todos los elementos de x salvo los 3 primeros. x[-(1:3)] – También podemos accedeer a posiciones especificas x[c(1,3,7)] 12/10/2016 58 2.6. Vectores índice: Ejemplos con vectores
  • 59. • [Ejercicio 1.18.] Dado el siguiente vector de edades: edad <- c(20,40,23,41,31,33,54,8,22) 12/10/2016 59 Ejercicios de clases: a) Utilice la indexación de vectores para acceder a la edad colocada en la tercera posición. b) Obtenga las tres primeras posiciones de dos formas diferentes. c) Sume la primera y la última posición. d) Repite el ejercicio d anidando la función length(). > edad[3] #a [1] 23 > edad[1:3] #b.1 [1] 20 40 23 > edad[c(1,2,3)] #b.2 [1] 20 40 23 > edad[1]+edad[9] #c [1] 42 > edad[1]+edad[length(edad)] #d [1] 42
  • 60. • Selección de elementos de acuerdo con una condición: índice lógico o indexación (ver sección siguiente para tipos de operadores). v<-c(-4:2,1:3,8:1) [1] -4 -3 -2 -1 0 1 2 1 2 3 8 7 6 5 4 3 2 1 v < 0 # [1] TRUE TRUE TRUE v[v < 0] # [1] -4 -3 -2 -1 # negacion lógica, con el operador ! v[!(v < 0)] v[v >= 0] Fmes.nacimiento == "Mar“ x <- c("a", "b", "c", "d") x[x < "d"] 12/10/2016 60 2.6. Vectores índice: valores lógicos
  • 61. • [Ejercicio 1.19.] Dado un vector de números enteros: my_vector<-c(1:10) a) Crea un nuevo vector llamado neno, con todos los valores superiores a 5. b) Utilice la indexación lógica para obtener los impares de dicho vector. c) Ahora obtenga todos los impares entre 4 y 7. > my_vector[my_vector>5] [1] 6 7 8 9 10 > my_vector[c(T,F)] [1] 1 3 5 7 9 > my_vector[4:7][c(F,T)] [1] 5 7 12/10/2016 61 Ejercicios de clases:
  • 62. • [Ejercicio 1.20.] Dado un vector irregular: my_vector<-c(2,4,8,9,5,1,4,8,3,7,8,1,9,6) a) Crea un nuevo vector llamado neno, con todos los valores superiores a 5. b) Utilice la indexación para obtener los impares de dicho vector (p. residuo). c) Utilice la indexación para obtener las coordenadas impares de dicho vector. > my_vector[my_vector>5] [1] 6 7 8 9 10 > my_vector[my_vector%%2!=0] [1] 9 5 1 3 7 1 9 > which(my_vector%%2!=0) [1] 4 5 6 9 10 12 13 12/10/2016 62 Ejercicios de clases:
  • 63. • [Ejercicio 1.21.]* Dado un vector de números: x<-c(0,7,8,7) comente los siguientes comandos: x[x!=0] (x+1)[x!=0] (x+1)[1:2][x!=0] (x)[x!=0 | x=7] #detecta el error (x[2:length(x)]-x[1:(length(x)-1)])/x[1:(length(x)-1)] 12/10/2016 63 Ejercicios de clases:
  • 64. 2.2. Vectores índice: Funciones which Esta función es sumamente útil, te indica la posición del vector donde se encuentra una numero determinado [ver también which.min() which.max()]. Fijense que no accedemos directamente a una posición, sino que desconocemos el índice y deseamos acceder a partir de una característica determinada. > mi_vector <- c(2,5,8,6,7,9,10,15,-1,8) > which(mi_vector==2) [1] 1 También ponemos componer esta función: > which(mi_vector==max(mi_vector)) [1] 8 Ejemplo aplicado: en los modelos factoriales donde buscamos el Máx{R2}. 12/10/2016 64
  • 65. • [Ejercicio 1.10.] Dado el siguiente vector votos_ocoa <-c(12356, 11231, 15675), referidos a la cantidad de votos de los partidos 1, 2 y 3, respectivamente, utilice la función which para determinar el partido vencedor. (pista: puedes usar ==max(x) ) y selecciones los valores superior a su media. > votos_ocoa <-c(12356, 11231, 15675) > which(votos_ocoa==max(votos_ocoa)) [1] 3 which(votos_ocoa==(votos_ocoa>mean(votos_ocoa) • [Ejercicio 1.11.]* Suponga que en vez de número, tienes el partido “a”, “b” y “c”, y en vez de números desea obtener el nombre del partido vencedor. [crea primero un vector de nombres] # creo un vector de nombres > nombres<-c("a","b","c") > nombres[which(votos_ocoa==max(votos_ocoa ))] [1] "c" 12/10/2016 65 Ejercicios de clases:
  • 66. • [Ejercicio 1.12.]* Suponga ha obtenido los datos de azua [votos_azua <-c(16356, 14231, 9675)] y bani [votos_bani <-c(6356, 4231, 975)], por tanto ahora obtiene una matriz de datos y necesita saber el partido que gano en cada provincia: como lo harías? > result<-numeric() > for (i in 1:3){ + result[i]<nombres[which(votosProvin[,i]==max(votosProvin[,i]))] + } > result [1] "c" "a" "a" 12/10/2016 66 Ejercicios de clases (motivar bucles):
  • 67. • En caso de una matriz bidimensional se puede especificar x[nfila,ncol], indicando la ubicación tanto de la fila como de la columna. > my_matrix <- matrix(1:12, nrow = 3, ncol = 4) [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 #Obtener el elemento de la fila 2, columna 3 > my_matrix[2,3] [1] 8 #Llamar todos los elementos de la fila 2 > my_matrix[2,] [1] 2 5 8 11 12/10/2016 67 2.6. Vectores índice: matrices
  • 68. • También podemos eliminar filas o columnas de una matriz mediante la indexación: > m[2, ,drop=F] [,1] [,2] [,3] [,4] [1,] 2 5 8 11 12/10/2016 68 2.6. Vectores índice: matrices
  • 69. • [Ejercicio 1.22.]* [Tomado de coursera]Dada la matriz: my_mat<- matrix(12:1,3,4) a) Obtenga una matriz [2x2] con los elementos de la esquina superior izquierda. b) Obtenga una matriz [2x2] con los elementos de la esquina superior derecha. c) Obtenga una matriz [2x2] con los elementos de la esquina inferior derecha. d) Como transformaría el inciso #c para que sea estándar para cualquier matriz? #a > my_mat[1:2,1:2] #b my_mat[1:2,3:4] #c my_mat[(3-2+1):3,(4-2+1):4] 12/10/2016 69 Ejercicios de clases:
  • 70. • [Ejercicio 1.23.]* [Tomado del curso Introducción a la programación en Matlab] Dada una matriz: my_mat<- matrix(1:12,3,4) devuelve devuelve una matriz que contiene sólo los elementos de my_mat que se encuentran en filas y columnas impares. Es decir, en las coordenadas (1,1)(3,1)… que no esten ni en filas, ni en columnas pares. my_mat[c(T,F), c(T,F)] [,1] [,2] [1,] 1 7 [2,] 3 9 • [Ejercicio 1.24.]* Intentelo con el operador colon o el comando seq. [R. my_mat[seq(1,3,2), seq(1,4,2)] 12/10/2016 70 Ejercicios de clases:
  • 71. • Cuando se trabaja con data.frame, se puede acceder a sus subconjuntos, usando el símbolo de $, a su izquierda se coloca el nombre de la lista y a la derecha. > x <- data.frame(elia=rnorm(4,mean=0,sd=4), coco=c(T, T, F, F)) x elia coco 1 -6.5209647 TRUE 2 1.6486238 TRUE 3 7.5228359 FALSE 4 0.2848676 FALSE > x$elia [1] 5.588611 -1.428934 -3.683146 3.452413 12/10/2016 71 2.6. Vectores índice: Data.frame $
  • 72. • Es incontable la cantidad de ocasiones en que necesitamso guardar nuestros resultados en alguna matriz de datos dinal, que exportamos a Excel para poder la presentación final de nuestros datos. (en la sección de bucles es importante esto quede claro). > summary(mtcars$mpg) Min. 1st Qu. Median Mean 3rd Qu. Max. 10.40 15.42 19.20 20.09 22.80 33.90 > summary(mtcars$mpg)[1] Min. 10.4 > summary(mtcars$mpg)[2] 1st Qu. 15.42 > summary(mtcars$mpg)[3] Median 19.2 12/10/2016 72 2.6. Vectores índice: Funciones
  • 73. • En muchisimos casos necesitamos acceder a una parte de los resutlados de alguna función, aquí ilustramos un ejemplo usando la base de datos mtcars. # Estudia brevemente la base de datos mtcars help(mtcars) # podemos estimar el modelo de regresión simple (utilizando lm) > lm(mtcars$mpg ~ mtcars$drat) Call: lm(formula = mtcars$mpg ~ mtcars$drat) Coefficients: (Intercept) mtcars$drat -7.525 7.678 12/10/2016 73 2.6. Vectores índice: Un ejemplo con el modelo de regresión (1)
  • 74. • Es incontable la cantidad de ocasiones en que necesitamso guardar nuestros resultados en alguna matriz de datos dinal, que exportamos a Excel para poder la presentación final de nuestros datos. (en la sección de bucles es importante esto quede claro). > summary(mtcars$mpg) Min. 1st Qu. Median Mean 3rd Qu. Max. 10.40 15.42 19.20 20.09 22.80 33.90 > summary(mtcars$mpg)[1] Min. 10.4 > summary(mtcars$mpg)[2] 1st Qu. 15.42 > summary(mtcars$mpg)[3] Median 19.2 12/10/2016 74 2.6. Vectores índice: Ejemplos con funciones
  • 75. # Puede darse en caso que necesitemos nos implima más resultados > myresult<-lm(mtcars$mpg ~ mtcars$drat) > summary(myresult) Call: lm(formula = mtcars$mpg ~ mtcars$drat) Residuals: Min 1Q Median 3Q Max -9.0775 -2.6803 -0.2095 2.2976 9.0225 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -7.525 5.477 -1.374 0.18 mtcars$drat 7.678 1.507 5.096 1.78e-05 *** --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 4.485 on 30 degrees of freedom Multiple R-squared: 0.464, Adjusted R-squared: 0.4461 F-statistic: 25.97 on 1 and 30 DF, p-value: 1.776e-05 12/10/2016 75 2.6. Vectores índice: Un ejemplo con el modelo de regresión (2)
  • 76. # O necesitamos acceder algún elemento de la estimación para un test de hipotesis adicional o graficar los residuales. > myresult<-lm(mtcars$mpg ~ mtcars$drat) > summary(myresult) > summary(myresult)$r.squared #acceder mediante funciones resid(myresult) #acceder mediante indexación Myresult[2] #ver los atributos attributes(summary(lm(ind_ipcddom ~ var_depent))) 12/10/2016 76 2.6. Vectores índice: Un ejemplo con el modelo de regresión (3)
  • 77. • Estas impresiones en ocasiones aparecen en formatos no deseados: format(1/1:5, digits = 2) [1] "1.00" "0.50" "0.33" "0.25" "0.20“ format(123456789, big.mark = ",") [1] "123,456,789” > sprintf("%f", pi) [1] "3.141593“ > sprintf("%.3f", pi) [1] "3.142" 12/10/2016 77 2.6. Vectores índice: Salidas
  • 79. 3.0. Operadores en R • En resumen, tenemos tres tipos de operadores: Aritméticos Comparativos Lógicos + Suma == igualdad & Y lógico - Resta != Diferente de ! No lógico * Multiplicación < Menor que | O lógico / División > Mayor que all ^ Potencia <= Menor o igual any %% residuo >= Mayor o igual %in% igual grupos %like% igualdad no exacta 12/10/2016 79
  • 81. 3.1. Operadores en R: Operadores aritmético • Las operaciones aritméticas permiten realizar operaciones del mismo nombre sobre matrices, vectores o data frames. `+`suma # v <- 2 + 3 `-`resta # v <- c(2, 3) - c(5, 1) `/`división `*`multiplicación `^`potencia' sqrt() raíz cuadrada # v <- c(9, 8, 31) abs() valor absoluto Nota: Si los dos vectores son de diferente tamaño, R repetirá la secuencia más pequeña múltiples veces. (> c(1,2,3,4)-c(1,2)) 12/10/2016 81
  • 82. • [Ejercicio 1.25.] Tenemos 530 monedas de 1 centavo; 1 centavo, 265 de 5 centavos, 80 de 10 centavos, y 80 de 25 centavos, calcular la cantidad de dólares que tenemos: > 530*(1/100)+265*(1/20)+80*(1/10)+80*(1/4) [1] 46.55 a) En muchos casos es preferible utilizar la notación matricial, que facilita bastante le calculo y resume los resultados. > c(530,265,80,80)%*%c(1/100,5/100,10/100,25/100) [,1] [1,] 46.55 12/10/2016 82 Ejercicios de clases:
  • 84. • Los operadores relacionales, permiten obtener comparar elementos de un vector y relaciones para generar secuencias lógicas. `> ` (mayor que), `< ` (menor que), `>=` (mayor igual), `<=` (menor igual), `==` (igualdad), `!=` (diferencia) 12/10/2016 84 3.2. Operadores en R: Operadores relacionales
  • 86. • En el caso de estos operadores, permiten agrupar operadores relacionales. `&` and | or 12/10/2016 86 3.3. Operadores en R: Operadores lógicos
  • 87. • [Ejercicio 1.26.] Dado un vector: x<-c(7,8,1,8,9,5,6,4,8,9,10), utiliza algún operador lógico que te permita conocer el total de los elementos comprendidos entre 3 y 7: sum((3 <= x & x <= 7)) [1] 4 a. Obtenga un vector llamado el_brother, lógico =TRUE cuando el elemento correspondiente al vector x este comprendido entre 3 y 7. el_brother<-(3 <= x & x <= 7) el_brother [1] TRUE FALSE FALSE FALSE FALSE TRUE TRUE... • [Ejercicio 1.27.] Estudie la diferencia entre los siguientes comandos: (3 <= x & x <= 7) x[(3 <= x & x <= 7)] 12/10/2016 87 Ejercicios de clases:
  • 88. • Podemos utilizar las operaciones lógicas para establecer filtros en matrices y data.frame: > my_matrix <-matrix(1:12, nrow=4, ncol=3, byrow=TRUE) > my_matrix [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 [3,] 7 8 9 [4,] 10 11 12 my_matrix[(my_matrix[, 1] == 4), , drop = FALSE] [,1] [,2] [,3] [1,] 4 5 6 12/10/2016 88 3.3. Operadores en R: Operadores lógicos, filtros
  • 89. • [Ejercicio 1.28.] Dado un vector nombres<-c("Pedro", "María", "Julia", "Marcos", "Anna"), crea un vector llamado sexo de la personas, este vector contiene los caracteres "H" y "M" según sea hombre o mujer. Posteriormente utilice este vector para llamar a los varones del vector nombre. sexo <-c("H","M","M","H","M") nombres[sexo=="H"] [1] "Pedro" "Marcos“ • [Ejercicio 1.29.]* Utilice la indexación lógica para determinar el porcentaje de hombres en su vector: > mean(sexo=="H") [1] 0.4 12/10/2016 89 Ejercicios de clases:
  • 91. • El operador Colon permite vectorizar operaciones y evitar realizar operaciones. Los dos puntos (:) es el operador para crear secuencias de forma que: x <- 1:10 [1] 1 2 3 4 5 6 7 8 9 10 • La c puede utilizar para concatenar cosas e incluir diferentes elementos en un vector. 2^(3:1) 2^((1:10)[c(F,T)]) 12/10/2016 91 3.4. Operadores en R: Operador colon
  • 92. • Esta característica permite resumir códigos. El próximo ejemplo se ilustra cómo usar vectores naturalmente para realizar operaciones comunes. y <- 1:5; x <- 6:10 y/x [1] 0.1666667 0.2857143 0.3750000 0.4444444 0.5000000 12/10/2016 92 3.4. Operadores en R: Operador colon
  • 93. • [Ejercicio 1.30.] Hemos visto diferentes formas de definir vectores con R. Supongamos que queremos definir el vector x = (1, 2, 3, 4, 5). Comprueba que las siguientes formas son equivalentes. x<-c(1,2,3,4,5) ; x<-1:5 ; x<-seq(1,5) • [Ejercicio 1.31.] Dado un vector x <- c(11,13,16,15,15,18), utiliza la vectorización para calcular la primera diferencia y la tasa de crecimiento (discreta) de dicho vector. > (x[2:6]-x[1:5]) > (x[2:6]-x[1:5])/x[1:5] [1] 0.1818182 0.2307692 -0.0625000 0.0000000 0.2000000 • [Ejercicio 1.32.] Define el vector y <- (1, 3, 5, 7) utilizando la función c(). ¿Cómo lo harías con la función seq()?. Recuerda que si tienes alguna duda sobre cómo se definen las funciones siempre puedes consultar la ayuda. > y<-c(1, 3, 5, 7) seq(from = 1, to = 7, by = 2) 12/10/2016 93 Ejercicios de clases:
  • 94. • [Ejercicio 1.33.]* [Tomado de Coursera, curso de programación en Matlab] Dado un entero positivo n, escriba un código que regrese la media [utilice mean()] del cuadrado de los n enteros. si n es 5, tiene que calcular el promedio de los números 1, 4, 9, 16 y 25: > n<-5 mean((1:n)^2) [1] 11 12/10/2016 94 Ejercicios de clases:
  • 96. • En muchas ocasiones necesitamos acceder a las posiciones que se encuentran entre ciertas posiciones (piense en los momentos acotados). En tales casos se utiliza el operador, %in%, el mismo verifica si i un cierto elemento de nuestro vector es igual a los elementos de un conjunto representado por un vector. n <- c(0,2,1,3,5,4,2,1,0,5) (n %in% c(0,1)) [1] TRUE FALSE TRUE FALSE FALSE ... 12/10/2016 96 3.5. Operadores especiales en R: %in%
  • 97. • [Ejercicio 1.34.] Dado un vector: x<-c(7,8,1,8,9,5,3,4,8,7,10). a) utiliza algún operador lógico que te permita conocer el total de los elementos iguales a 3 o 7. b) Obtenga un vector x2 donde remplace por 0 los elementos del vector x iguales a 3 o 7. #a sum((x %in% c(3,7))) [1] 3 #b > x[x %in% c(3,7)]<-0 > x [1] 0 8 1 8 9 5 0 4 8 0 10 12/10/2016 97 Ejercicios de clases:
  • 99. USArrests[1,] Murder Assault UrbanPop Rape Alabama 13.2 236 58 21.2 > substr('tragabala', start = 1, stop = 4) [1] "trag“ > nchar('tragabala') #cuenta caracteres, !=length [1] 9 > Última tres letra > substr('tragabala', nchar('tragabala')-3+1, nchar('tragabala')) union() intersect() setdiff() is.element(elem1, set10) # elem1 %in% set10 12/10/2016 99 4.1. funciones para strings
  • 100. 4.1. Adicionales: Paste > paste(c("q"), 1:4, sep="") [1] "q1" "q2" "q3" "q4" > paste(c("q"), 1:4, sep="-") [1] "q-1" "q-2" "q-3" "q-4« > paste(1:5, collapse = "") [1] "12345" final, cada argumento original se separa del siguiente por un espacio en blanco, aunque ello puede cambiarse utilizando el argumento sep="cadena", que sustituye el espacio en blanco por cadena, la cual podría ser incluso vacía. 12/10/2016 100
  • 101. Ejercicios • [Ejercicio] A la secuencia de números realizada anteriormente ha decidido colocarle el trimestre al que corresponde cada mes, obteniendo el siguiente resultado, modifique el código de forma que los quintiles aparezcan de forma correcta y luego imprima los resultados. > datos<-cbind(anios, mes, dic, ultri) > quintiles<-paste(c("q"), 1:4, sep="") > data.frame(datos, quintiles) quintiles<-rep(paste(c("q"), 1:4, sep=""), each=3) 12/10/2016 101
  • 102. • Es un operador de igualdad parcial: > clrs <- c("blue", "black", "brown", "beige", "berry", "bronze", "blue-green", "blueberry") > dfx = data.frame(Velocity=sample(100, 8), Colors=clrs) > dfx Velocity Colors 1 67 blue 2 52 black 3 55 brown 4 65 beige 5 87 berry 6 27 bronze 7 69 blue-green 8 43 blueberry > ndx <- grep('^be.*?' , dfx$Colors, perl=T) > dfx[ndx,] 12/10/2016 102 4.1. Operadores especiales %like% | grep Tomado de: http://stackoverflow.com/questions/3539826/whats-the-r-equivalent-of-sqls-like-description-statement * 0 o más carac… + 1 o más carac…
  • 103. > # solo que tenga la w > ndx <- grep"[f-k]", dfx$Colors, perl=T) > dfx[ndx,] Velocity Colors 2 52 black 4 65 beige 7 69 blue-green > # solo que tenga la w > ndx <- grep"[w]", dfx$Colors, perl=T) > dfx[ndx,] Velocity Colors 3 55 brown > # solo aquella que tenga un guión > dfx[grep("[-]" , dfx$Colors, perl=T), ] Velocity Colors 7 69 blue-green 12/10/2016 103 4.1. Operadores especiales: %like% | grep "^[a-c].*" #empieza con una letra de la “a” a la “c”
  • 104. • También podemos utilizar la función con valores: > el_panita<-c(8057,8546,4586,5698,4065) > grep,1:10) > grep(4,el_panita) [1] 2 3 5 > el_panita[ grep(4,el_panita)] [1] 8546 4586 4065 > el_panita[grep("^4.*",el_panita)] [1] 4586 4065 > el_panita[grep("8$",el_panita)] [1] 5698 #$ para terminado en. 12/10/2016 104 3.5. Operadores especiales en R: %like% | grep valores
  • 105. • Esta función permite cambiar los valores contenido en un objeto de carácter cadena, la sintaxis de la función es la siguiente: chartr(old, new, x) > chartr("a","A", "tragabala") [1] "trAgAbAlA“ #ojo, las letras no se consideran conjunta > > chartr("al","AL", "tragabala") [1] "trAgAbALA" 12/10/2016 105 4.1. Traslación de caracteres: chartr()
  • 106. • En muchas ocasiones necesitamos imprimir resultados: > my_caracter<-'Somos tragabala' > print(my_caracter) [1] "Somos tragabala“ > print(my_caracter, quote=F) [1] Somos tragabala 12/10/2016 106 3.5. Operadores imprimiendo
  • 108. 4.1. Valores perdidos • R indica los valores desconocidos (missing) mediante el valor NA. • La función is.as() permite saber si un vector tiene valores desconocidos > is.na(c(1:3, NA, 10, 11, NA)) [1] FALSE FALSE FALSE TRUE FALSE FALSE TRUE #toma solo los valores vector<-c(1:3, NA, 10, 11, NA) vector[!is.na(c(1:3, NA, 10, 11, NA))] 12/10/2016 108
  • 109. • [Ejercicio 1.36.] Utiliza alguna función que te permita contabilizar el número de valores perdidos en el vector x<- c(1:4, NA, NA, 10, NA). sum(is.na(x)) [1] 3 #Alt. 2 sum(x, na.rm = TRUE) • [Ejercicio 1.37.] Utilice la indexación lógica para a partir de un vector que identifique los valores perdidos, elimines los datos faltantes en el vector x<-c(1:4, NA, NA, 10, NA). > x[!is.na(x)] [1] 1 2 3 4 10 12/10/2016 109 Ejercicios de clases:
  • 110. • [Ejercicio 1.38.] Dado el vector: V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8)) Utilice la función as.na() para contar la cantidad de valores perdidos que se encuentran en el vector, luego elimine los na del vector. V1<-c(NA,2.1,1.4,NA,6,3.5,8, rep(NA, times=8)) is.na(v1) > v1[is.na(v1) == F] [1] 2.1 1.4 6.0 3.5 8.0 12/10/2016 110 Ejercicios de clases:
  • 111. 4.2. Valores perdidos: Data.frame • Cuando trabajamos con bases de datos, también podemos dejar de considerar las filas donde se presenta algún dato faltante, por ejemplo: > airquality[1:6,] Ozone Solar.R Wind Temp Month Day 1 41 190 7.4 67 5 1 2 36 118 8.0 72 5 2 3 12 149 12.6 74 5 3 4 18 313 11.5 62 5 4 5 NA NA 14.3 56 5 5 6 28 NA 14.9 66 5 6 > airquality[complete.cases(airquality),][1:6,] 12/10/2016 111
  • 114. • Orden de importancia de mayor a menor - Funciones y expresiones agrupadas - Operaciones indexadas - Aritméticas - Comparación - Formulas - Asignación - Ayuda 12/10/2016 114 4.2. Adicionales: precedencia
  • 115. 4.3. Exportar datos a Excel o .PDF 12/10/2016 115
  • 116. 4.2. Adicionales: Exportar a Excel • Por último, muchas veces completar la automatización de tareas requieres exportar nuestros resultados a Excel. En R dicho procedimiento se puede realizar mediante la siguiente línea de código: save(prueba, file="datanew.rda") #guardamos format.R write.csv(prueba, file="datanew.csv") #guardamos CSV • Para guardarlo directamente en Excel usaremos el paquete xlsReadWrite install.packages("xlsReadWrite") library(xlsReadWrite) paquetewrite.xls(prueba,file="datanew.xls",sheet=“sheet1") 12/10/2016 116
  • 117. 4.2. Adicionales: Exportar a pdf # Doy un nombre al archivo que contendrá el "output" en .pdf pdf(“Nerys_hist.pdf") # Genero 20,000 números normales y hago un histograma hist(rnorm(20000)) # Cierro el archivo dev.off() 12/10/2016 117
  • 119. Referencias • Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole. • Bravo, F. “Análisis exploratorio en R”. 2013 • Conesa, D. 2013: “Curso introduccion R”. Universidad de Valencia, Dept. de estadística e investigación operativa. Valencia, España. (http://www.uv.es/conesa/CursoR/material/handout-sesion2.pdf) • Contreras J.M., Molina E. y Arteaga P. “Introducción a la programación estadística con R” • Dalgaard, P. “Introductory Statistics with R”. Second Edition. University of Copenhagen. 2008 • Matloff, N. “The Art of R Programming”. 2009 • Narayanachar, P.; Ramaiah, S and Manjunath, B.G. “A course in Statistics with R”. Wiley. This edition first published 2016 • Santana (2013). “El Arte de Programar en R” 12/10/2016 119