El presente documento tiene objetivo la resolución de una serie de problemas orientados al aprendizaje de los fundamentos del software R, es decir, trabajar con operaciones aritméticas, estructuras de datos y manipulación e interacción con bases de datos dentro de los servidores de R.
Inicializamos algunas variables para utilizarlas en los siguientes ejemplos de operadores aritméticos:
a = 32
b = 5
c = 0
d = 1
e1 = cos(c)
e1
[1] 1
e2 = b^2
e2
[1] 25
e3 = log2(a)
e3
[1] 5
e4 = a%%b
e4
[1] 2
e5 = a%/%b
e5
[1] 6
e6 = a**2
e6
[1] 1024
e7 = cos(sin(0))
e7
[1] 1
e8 = logb(a, 2) # Igual a log2(a)
e8
[1] 5
e9 = sin(c*1000)
e9
[1] 0
e10 = log2(sin(30*pi/180)) # ángulo en grados
e10
[1] -1
Se trabaja con dos matrices idénticas las cuales se comparan con el operador lógico \(==\). Esto compara cada uno de los datos dentro de la matriz y devuelve booleanos dentro de las casillas tal y como se muestra a continuación:
m1 = matrix(c(1,2,3,4,5,6,7,8,9,10),nrow=5,ncol=2)
m2 = matrix(c(5,4,3,4,8,6,21,12,9,10),nrow=5,ncol=2)
m1 == m2
[,1] [,2]
[1,] FALSE TRUE
[2,] FALSE FALSE
[3,] TRUE FALSE
[4,] TRUE TRUE
[5,] FALSE TRUE
Los sub índices de la matriz que contienen datos iguales devuelven el valor TRUE, mientras que los que son diferentes entregan FALSE. Si evaluaramos el caso contrario, es decir, \(m_1 == m_2\), deberíamos obtener el resultado contrario:
m1 != m2
[,1] [,2]
[1,] TRUE FALSE
[2,] TRUE TRUE
[3,] FALSE TRUE
[4,] FALSE FALSE
[5,] TRUE FALSE
A continuación se trabajará con factores, los cuales son una especie de etiqueta que sirve para clasificar datos según categorías, tal y como se muestra a continuación:
roles = c("D", "C", "CO", "I", "D", "I")
roles
[1] "D" "C" "CO" "I" "D" "I"
Sin embargo, no sabemos muy bien qué significan estos caracteres o etiquetas, por lo que podemos asignar estiquetas a estos factores para lograr una mejor descripción:
roles = factor(roles, levels=c("D","C","CO","I"),labels=c("Duelista","Centinela","Controlador","Iniciador"))
roles
[1] Duelista Centinela Controlador Iniciador Duelista Iniciador
Levels: Duelista Centinela Controlador Iniciador
Los Levels son todas las diferentes categorías que existen en la clasificación de datos, en este caso: Duelista, Centinela, Controlador e Iniciador.
A continuación se muestra la lectura de un archivo \(.csv\) que contiene los datos de algunas personas, tales como nombre, edad y correo:
personas = read.csv("personas.csv", header=FALSE)
head(personas)
V1 V2 V3
1 Nicolas 25 nicojaja@jaja.com
2 Joaquin 19 joaquin@jaja.cl
3 Lucas 19 lucas@kdjskd.uk
4 Calbucano 20 calcuco.com
Sin embargo, las columnas no indican claramente qué contienen, por lo que podemos asignar nombres a la columnas:
columnas = c("NOMBRE", "EDAD", "CORREO")
personas = read.csv("personas.csv", header=FALSE, col.names = columnas)
personas
NOMBRE EDAD CORREO
1 Nicolas 25 nicojaja@jaja.com
2 Joaquin 19 joaquin@jaja.cl
3 Lucas 19 lucas@kdjskd.uk
4 Calbucano 20 calcuco.com
Podríamos hacer lo mismo con las filas, pero dado que se está mostrando una lista de personas, no tiene mucho sentido:
filas = c("PERSONA 1", "PERSONA 2", "PERSONA 3", "PERSONA 4")
personas = read.csv("personas.csv", header=FALSE, col.names = columnas, row.names = filas)
personas
NOMBRE EDAD CORREO
PERSONA 1 Nicolas 25 nicojaja@jaja.com
PERSONA 2 Joaquin 19 joaquin@jaja.cl
PERSONA 3 Lucas 19 lucas@kdjskd.uk
PERSONA 4 Calbucano 20 calcuco.com
A continuación se presenta un programa en R que simula el cachipun contra una CPU:
cachipun = function() {
cat("1. Piedra\n2. Papel\n3. Tijeras")
eleccion = as.integer(readline(prompt = "Introduce tu elección: "))
cpu = sample(1:3, 1)
print(paste("Elegiste: ", switch(eleccion, "Piedra", "Papel", "Tijeras")))
print(paste("CPU elige: ", switch(cpu, "Piedra", "Papel", "Tijeras")))
if (eleccion == 1 & cpu == 2 | eleccion == 2 & cpu == 3 | eleccion == 3 & cpu == 1) {
print("PERDISTE :C")
}
if (eleccion == 2 & cpu == 1 | eleccion == 3 & cpu == 2 | eleccion == 1 & cpu == 3) {
print("GANASTE!!!")
}
if (eleccion == cpu) {
print("EMPATE. CUECK")
}
}
cachipun()
1. Piedra
2. Papel
3. Tijeras
Introduce tu elección: 1
[1] "Elegiste PIEDRA y cpu elige: PAPEL. PERDISTE"
Se utiliza el conjunto de datos llamado \(AirPassengers\) el cual muestra la cantidad total mensual de pasajeros (en miles) en una aerolinea internacional desde 1949 hasta 1960. Esto podría utilizarse para realizar predicciones sobre la cantidad de usuarios que usarán la aerolinea en los próximos años, o simplemente hacer una descripción sobre la tendencia o comportamiento que se ha dado en la aerolinea en los últimos años.
La variable utilizada en este caso es la cantidad de personas que usan la aerolinea cada mes, siendo una variable cuantitiva la cual puede tomar solamente valores enteros positivos y que tiene unidad de medida (Persona).
> summary(AirPassengers)
Min. 1st Qu. Median Mean 3rd Qu. Max.
104.0 180.0 265.5 280.3 360.5 622.0
Al observar el resumen de la información se puede evidenciar que la diferencia entre el mínimo y el máximo de pasajeros que utilizaron la aerolinea en un mes, es de más de 500.000 personas. La mitad de los datos se encuentra numericamente más cercano al mínimo que al máximo lo que muestra una concentración de datos hacia el mínimo.
Linea de tiempo de usuarios mensuales de una aerolinea desde 1949 a 1961.
Al observar el gráfico se puede evidenciar un aumento en la cantidad de usuarios que ha utilizado la aerolinea en los últimos 12 años. Podría realizarse un análisis descriptivo en base a la información que se tiene, o bien, utilizar los datos para realizar un trabajo de estadística inferencial para predecir la tendencia en los próximos años. Si bien la tendencia muestra un aumento, cada año existen picos y valles que podrían suponer las temporadas altas y bajas de vuelos, que realizando un estudio un poco más exhaustivo, podría revelar que se trata de la temporada de vacaciones o alguna otra actividad relacionada.