Vectores

Sahlre

10 de abril de 2016

Objetos de almacenamiento: Vectores

Esta semana aprenderemos sobre objetos de almacenamiento. Cómo su nombre lo indica son objetos donde se almacenará la información de interés y que será analizada. Por ejemplo, cuando tienes una base de datos en excel donde registras el nombre del cliente, su edad, su dirección, su género y cantidad de productos comprados, significa que estas almecenando información; dicha base de datos se conoce en el mundo de R como data.frame, objeto de almacenamiento que abordaremos las próximas semanas. Para la semana 3 nos concentraremos en el objeto de almacenamiento más básicos conocidos como vector.

¿Antes de iniciar recuerdas que aprendiste la primera clase?

Por favor, asigne el valor “Estoy muy feliz” a la variable Yo e imprimala.

Respuesta

#Asignación
Yo <- "Estoy muy feliz"

#Imprimir
Yo
## [1] "Estoy muy feliz"

Vectores (vectors in English)

Los vectores son arreglos unidimensionales (objetos) o una herramienta que nos sirve para almacenar datos de un sólo tipo, ya sea de tipo númerico, de texto o de tipo logico.

Para crear un vector se utiliza la función c(). Luego situas los elementos a almacenar separados por coma dentro del parentesis.

Ejemplo

vector_numerico <- c(1, 45, 98899)
vector_numerico
## [1]     1    45 98899
vector_de_texto <- c("Santiago Londoño", "Lionel Messi", "Luis el Mordelon Suárez")
vector_de_texto
## [1] "Santiago Londoño"        "Lionel Messi"           
## [3] "Luis el Mordelon Suárez"
vector_logico <- c(F, T, T)
vector_logico
## [1] FALSE  TRUE  TRUE

¿Pregunta?

Cree un vector lógico o booleano que contenga TRUE, FALSE, FALSE, FALSE. Llame a ese vector mi_primera_vez e imprimalo

Solución

mi_primera_vez <- c(T, F, F, F)
mi_primera_vez
## [1]  TRUE FALSE FALSE FALSE

Utilizando vectores para realizar nuestro primer análisis estadístico

Supongamos que somos amantes de los juegos de azar y queremos analizar nuestro desempeño en el casino la última semana. Para realizar ese proceso primero debemos recolectar y almacenar información en vectores.

Primero cree un vector que contenga la siguiente información, tenga presente que las posiciones 1 de cada vector corresponde a Lunes, la 2 a martes, la 3 a miércoles, la 4 a jueves y la 5 a viernes.

Para el juego de poker (nota: valores en miles de pesos colombianos)

Para el juego de la ruleta:

Solución

#Vector poker
poker <- c(140, -50, 20, -120, 240)
poker
## [1]  140  -50   20 -120  240
#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)
ruleta
## [1]  -24  -50  100 -350   10

Nombrar un vector

Note que los vectores creados no incluyen los días de la semana. Sería muy cheveré que los vectores los incluyeran ya que esto permitirá realizar un mejor análisis.

Para proporcionar nombres dentro de un vector se usa la función names. Esta función se debe utilizar de la siguiente manera:

Este código crea primero crea un vector cualquiera llamado cualquier_vector en este caso un vector de texto, que almacena dos datos. Luego utiliza la función names() para asignarle al vector cualquiera_vector los nombres deseados.

Apliquemos esta poderosa herramienta y realiza el siguiente ejercicio

Asignale los días de la semana a los vectores poker y ruleta creados previamente. Por si no lo recuerdas los días de la semana son: Lunes, Martes, Miércoles, Jueves, Viernes, Sábado y Domingo.

Solución

#Vector poker
poker <- c(140, -50, 20, -120, 240)
poker
## [1]  140  -50   20 -120  240
#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)
ruleta
## [1]  -24  -50  100 -350   10
#Mira lo que sucede si aplico la función names() sobre los vectores.

names(poker)
## NULL
names(ruleta)
## NULL
#Solución ejercicio

names(poker) <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")
names(ruleta) <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")

#Mira lo que sucede si aplico nuevamente la función names sobre los vectores. 
#¿Ves alguna diferencia?
names(poker)
## [1] "Lunes"     "Martes"    "Miércoles" "Jueves"    "Viernes"
names(ruleta)
## [1] "Lunes"     "Martes"    "Miércoles" "Jueves"    "Viernes"
#Observa que sucede si imprimo los vectores

poker
##     Lunes    Martes Miércoles    Jueves   Viernes 
##       140       -50        20      -120       240
ruleta
##     Lunes    Martes Miércoles    Jueves   Viernes 
##       -24       -50       100      -350        10

Camino hacia la eficiencia

Espero haya notado que para cada vector se escribio dos veces lo mismo. Realmente es una tarea muy aburridora y lo sería aún más si necesitaras repetir el proceso más de dos veces.

El camino más eficiente es crear un vector que contenga los días de la semana y luego utilizarlo según sea mi necesidad

Ejemplo

#Vector poker
poker <- c(140, -50, 20, -120, 240)

#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)

#Creo un vector con los nombres de la semana

nombres_semana <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")

#Doy nombre a los elementos de los vectores poker y ruleta respectivamente.
names(poker) <- nombres_semana
names(ruleta) <- nombres_semana

#Se obtiene el mismo resultado
poker
##     Lunes    Martes Miércoles    Jueves   Viernes 
##       140       -50        20      -120       240
ruleta
##     Lunes    Martes Miércoles    Jueves   Viernes 
##       -24       -50       100      -350        10

Cálculo de ganancias totales

Felicitaciones ahora que usted tiene vectores nombrados adecuadamente esta listo para realizar algo de magia. Suponga que usted quiere responder las siguientes preguntas:

Para responder esas preguntas, además de crear vectores debes tener a la mano las siguientes herramientas:

Ejemplo

A_vector <- c(1,2,3)
B_vector <- c(4,5,6)


total_vector <- A_vector + B_vector
total_vector
## [1] 5 7 9

Ejemplo

A_vector <- c(1,2,3)
B_vector <- c(4,5,6)


suma_A_vector <- sum(A_vector)
suma_A_vector
## [1] 6
suma_B_vector <- sum(B_vector)
suma_B_vector
## [1] 15

Ejemplo

A_vector <- c(1,2,3)
B_vector <- c(4,5,6)


promedio_A_vector <- mean(A_vector)
promedio_A_vector
## [1] 2
promedio_B_vector <- mean(B_vector)
promedio_B_vector
## [1] 5

Ejercicio

Teniendo las herramientas proporcionadas hasta aquí, responda las siguientes preguntas:

Recuerda:los datos con los que estamos trabajando son:

#Vector poker
poker <- c(140, -50, 20, -120, 240)

#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)

#Creo un vector con los nombres de la semana

nombres_semana <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")

#Doy nombre a los elementos de los vectores poker y ruleta respectivamente.
names(poker) <- nombres_semana
names(ruleta) <- nombres_semana

Solución

#Vector poker
poker <- c(140, -50, 20, -120, 240)

#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)

#Creo un vector con los nombres de la semana
nombres_semana <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")

#Doy nombre a los elementos de los vectores poker y ruleta respectivamente.
names(poker) <- nombres_semana
names(ruleta) <- nombres_semana

#¿Cuánto ha sido la ganancia o pérdida por día de la semana? 
#Asigne esta respuesta en una variable denominada resultado_x_dia e imprimala.

resultado_x_dia <- poker + ruleta
resultado_x_dia
##     Lunes    Martes Miércoles    Jueves   Viernes 
##       116      -100       120      -470       250
#¿Ha perdido dinero durante la semana? Asigne esta respuesta en una variable 
#denominada resultado_total, e imprimala.
resultado_total <- sum(poker) + sum(ruleta)
resultado_total
## [1] -84
#¿Esta ganando o perdiendo dinero en poker o en la ruleta? 
#Asinge la respuesta para el juego poker en una variable denominada resultado_poker, 
#para el juego ruleta en una variable denominada resultado_ruleta. 
#Ambas variables deben ser imprimidas.

resultado_poker <- sum(poker)
resultado_poker
## [1] 230
resultado_ruleta <- sum(ruleta)
resultado_ruleta
## [1] -314

Comparando desempeños

Para realizar comparaciones por lo general se utilizan los siguientes operadores lógicos < menor que, <= menor o igual a, > mayor que, >= mayor o igual a y != diferente a.

Ejemplo 1

8 < 9
## [1] TRUE
6 > 2
## [1] TRUE
5 >= 5
## [1] TRUE
7 <= 87
## [1] TRUE
7 != 7
## [1] FALSE

¿Qué resultado almacenará la variable comp, la cual se obtiene con el siguiente código?

#Vector poker
poker <- c(140, -50, 20, -120, 240)

#Vector ruleta
ruleta <- c(-24, -50, 100, -350, 10)

#Creo un vector con los nombres de la semana
nombres_semana <- c("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")

#Doy nombre a los elementos de los vectores poker y ruleta respectivamente.
names(poker) <- nombres_semana
names(ruleta) <- nombres_semana

resultado_poker <- sum(poker)

resultado_ruleta <- sum(ruleta)

comp <- resultado_poker > resultado_ruleta

Respuesta

comp
## [1] TRUE