# Taller de Introducción A R
# Taller de Introducción A R
# Taller de Introducción A R
Simbología:
Amarillo = título
Verde = comentario
celeste = resultados respectivos
# Taller de introducción a R
Este taller está diseñado para introducir en lenguaje R a los y las estudiantes de distintas
áreas, sin necesidad de un conocimiento previo de programación.
## 1. Ambiente de trabajo
## 2. Operaciones básicas
La característica más básica de R es que puede ser usado como calculadora. Las
operaciones básicas se pueden realizar mediante los símbolos tradicionales:
\* (multiplicación)
\- (resta)
\+ (suma)
\: (división)
2.1 + 3.1
4.1 - 9.2
1.21 * 0.32
100 / 5
100 * 2 / 2
100**2
respuestas:
5.2
-5.1
0.3872
20
100
10000
## 3. Asignación de valores
El valor queda guardado en el objeto llamado valor, sin embargo, no se visualiza. Para
visualizar el valor guardado, se debe escribir el nombre del objeto y ejecutar la celda.
valor
5
#EJEMPLO MAU
valor1 = 10*10
valor1
100
También es posible guardar dos valores en objetos, y operarlos utilizando los nombres de
los objetos.
x=4
y = -2.3
x*y
-9,2
Otras de las operaciones básicas en R se ejecutan de la siguiente manera. Algunos de
estas requieren el uso de funciones de R, el argumento de dichas funciones es el número
en cuestión.
x=4
# Potencias
x^2
x^3
# Raíz cuadrada
sqrt(x) # Función de la raíz cuadrada
# Logaritmo
log(x) # Función de logaritmo --- POR DEFECTO USA BASE E ------EULER
# Valor absoluto
y = -5
# Factorial
factorial(x) # Función de factorial FACTORIAL ES R! FACTORIAL DE 3 ES 3*2*1
Resultados respectivos:
16
64
2
1.38629436111989
5
24
## 4. Tipos de datos
Los números no son los únicos tipos de datos que pueden ser asignados a objetos,
además, hay varios tipos de objetos.
- Números
- Caracteres: palabras o números entre comillas.
- Faltante
- Booleano: Tiene dos opciones, verdadero (1) o falso (0).
# Número
x = 2.1
x
# Caracter
y = "Metallica"
a = "10"
# Valor faltante
z = NA
z
# Booleano
w = TRUE # o FALSE
w
class(w)
## 5. Tipos de objetos
c(3,1,7)
"SIEMPRE DEBE SER LA C MINÚSCULA, SI NO, TIRARÁ ERROR", Y EL PUNTO QUE
HAY... ES UNA SEPARACIÓN SOLAMENTE
# Secuencia de números
seq( # Comando de secuencia
from = 0, # Desde donde comienza la secuencia
to = 1, # Hasta donde llega la secuencia
by = 0.1 # Incremento de la secuencia ------- PODEMOS OCUPAR UN LENGHT "LARGO"
)
0 - 0,1 - 0,2 - 0,3 - 0,4 - 0,5 - 0,6 - 0,7 - 0,8 - 0,9 - 1
# Secuencia de números
seq(
from = 0, # Inicio de la secuencia
to = 20, # Fin de la secuencia
length = 5 # Cantidad de número que se deben generar entre el incio el final (inclusive)
)
0 - 5 - 10 - 15 - 20
# Otra opción es usar el comando ':' “”dos puntos”
# Para generar un secuencia automática de 1 en 1
2:10 # del 2 al 10
-4:0 # del -4 al 0
10:-2 #del 10 al -2
2 - 3 - 4 - 5 - 6 -7 - 8 - 9 - 10
-4 - 3 -2 - 1 0
10 - 9 - 8 - 7 - 6 - 5 - 4 - 3 - 2 - 1 - 0 -1 -2
#ejemplos sofi
ejemplo = seq(from = 1, to = 10, length = 12)
ejemplo
# Consultamos directamente el valor que está en la tercera posición
ejemplo[3]
ejemplo[c(1,4,6)] # ver varios números de la secuencia
ejemplo[-c(1,2,3)] # elimina los valores puntuales
ejemplo[-(1:3)] # elimina valores del 1 HASTA el 3
2.63636363636364
13.454545454545455.09090909090909
12.636363636363643.454545454545454.272727272727275.090909090909095.909090909
090916.727272727272737.545454545454558.363636363636369.1818181818181810
3.454545454545454.272727272727275.090909090909095.909090909090916.7272727272
72737.545454545454558.363636363636369.1818181818181810
3.454545454545454.272727272727275.090909090909095.909090909090916.7272727272
72737.545454545454558.363636363636369.1818181818181810
# Podemos consultar varias posiciones al mismo tiempo
# La tercera y sexta posición en el vector
ejemplo[c(3,6)]
2.636363636363645.09090909090909
11.818181818181822.636363636363643.454545454545454.272727272727275.090909090
909095.909090909090916.727272727272737.545454545454558.363636363636369.18181
81818181810
1.818181818181822.636363636363643.454545454545454.272727272727275.0909090909
09095.909090909090916.727272727272737.545454545454558.363636363636369.181818
1818181810
1.818181818181822.636363636363643.454545454545455.909090909090916.7272727272
72737.545454545454558.363636363636369.1818181818181810
'UDP''UDP''UDP''UDP''UDP'
'Hola''Mundo''Hola''Mundo'
# Podemos repetir cantidad de veces distintas los elementos del vector
rep(
x = c("Hola","Mundo"), # Vector (de números o palabras) que voy a repetir
times = c(2,3) # El primer elemento del vector se repite 2 veces y el segundo 3.
)
# Suma
x+y
2-6-5 -4 - 4 - 5
# Resta
x-y
0 -2 1 -4 4 7
6 9 7 5 5 4
# Multiplicación
x*y
1 8 6 0 0 -6
2 4 6 -8 8 12
# División
y/x
1 2 0.666666666666667 0 0 -0.166666666666667
# Hay que tener cuidado al dividir, ya que algún denomiador puede ser cero,
# lo cual, perturba los valores de la salida
x/y
0.3333333333333331.333333333333330.66666666666666700
—---------------------------------—------------------------------------------------------------------------------------
# Si deseamos que los número sean enteros podemos redondearlos con el comando
´round( )' ##EL ROUND SIRVE PARA REDONDEAR ""DECIMALES"""
##ejemplo arreglado x sofi
round(
numeros, # Vector de números a redondear
digits = 0 # Cantidad de dígitos a redondear, en este caso 0 decimales
)
4277345923
—-----------------------------------------------------------------------------------------------------------------------
# Para calcular el largo de un vector podemos usar el siguiente comando ##
##entrega el tamaño del vector##
length(x)
#ejemplo#
v = c(2,4,5)
length(v)
sample(v , size = 3 , replace =F)
## Ejercicios
- s = (5, 6, 7, 8)
- t = (8, 7, 6, 5)
- u = (1, 1,75, 2,5, 3,25, 4)
- v = (3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2)
- w = (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
- x = (1, 2, 3, 4, 6, 8, 10, 12)
- y = (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
- z = (1, 3, 6, 10, 15, 21, 28, 36, 45, 55)
respuesta item 1
s = c(5,6,7,8)
s = 5:8
2. Defina de 2 formas diferentes un vector que contenga todos los números pares del 1 al
100. Luego repita este proceso para obtener los números impares.
3. Concatene los vectores s y t. Luego, determine la suma total de los números dentro del
vector.
s = c(5,6,7,8)
s = 5:8
w = rep(c(1,2,3), times = 5)
#en la parte del c--- este puede abreviarse también como "1:3"
x = seq()
#segundo ejercicio"
#PRIMERA FORMA#
seq(from = 1 , to = 100 , by = 1)
1 2 3 4 5 6 7 8 9 10 11 12 13 … 56 57 58 … 88 89 90 … 98 99 100
#SEGUNDO EJERCICIO"
#SEGUNDA FORMA
x = 1:50
2*x
2 4 6 8 10 12 … 88 90 92… 96 98 100
## Ejercicios
- s = (5, 6, 7, 8)
- t = (8, 7, 6, 5)
- u = (1, 1,75, 2,5, 3,25, 4)
- v = (3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2)
- w = (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
- x = (1, 2, 3, 4, 6, 8, 10, 12)
- y = (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
- z = (1, 3, 6, 10, 15, 21, 28, 36, 45, 55)
2. Defina de 2 formas diferentes un vector que contenga todos los números pares del 1 al
100. Luego repita este proceso para obtener los números impares.
3. Concatene los vectores s y t. Luego, determine la suma total de los números dentro del
vector.
## Ejercicios
- s = (5, 6, 7, 8)
- t = (8, 7, 6, 5)
- u = (1, 1,75, 2,5, 3,25, 4)
- v = (3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2)
- w = (1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3)
- x = (1, 2, 3, 4, 6, 8, 10, 12)
- y = (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)
- z = (1, 3, 6, 10, 15, 21, 28, 36, 45, 55)
2. Defina de 2 formas diferentes un vector que contenga todos los números pares del 1 al
100. Luego repita este proceso para obtener los números impares.
3. Concatene los vectores s y t. Luego, determine la suma total de los números dentro del
vector.
letras = c("A","A","B","A","B","A","A","A","B","B")
letras
class(letras) #nos entrega el tipo de objeto
# PARA TRANSFORMARLO A FACTOR USANDO FACTOR()
letras.f = factor(letras , levels = c("A","B"))
class(letras.f)
letras.f
123
3 6 9 12
# U horizontalmente
rbind(x,y)
Las matrices se pueden sumar, restar, multiplicar y dividir término con término del mismo
modo que los vectores.
## Ejercicios
1. Crear una matriz de 3 filas y 4 columnas con números aleatorios entre 1 y 10.
Toxicidad = factor(
x = c("Alta", "Baja", "Media"), # Vector de caracteres
levels = c(c("Alta", "Media", "Baja")) # Indicamos el orden de los caracteres según un
criterio,
# por ejmeplo de más alta a más baja toxicidad.
# Para ello, deben ir en el orden deseado
)
Toxicidad
# En la salida, se aprecia el vector de caracteres original, junto a una glosa que indaca los
niveles con los
# que se debe considerar.
# La utilidad recae en posteriores aplicaciónes gráficas que serán vistas durante el curso
base = data.frame(Gender=c("M","F","M","F","M","F"),
Height=c(1.83,1.76,1.82,1.60,1.90,1.66),
Weight=c(67,58,66,48,75,55)
)
base
mascotas[mascotas$tipo=="perro",1:2]
perritos= mascotas[mascotas$tipo=="perro",]
#despues de la coma muestra todas las columnas de la base que cumplen con la base que
cumplen la condicion de la fila
dim(perritos) #entrega la dimension de la fila de la columna
dim(perritos)[1] #entrega cantidad de filas de la base
dim(perritos)[2] #entrega cantidad de columnas de la base
# Podemos extraer una de las columas, de igual modo que con las matrices
# Aunque, es posible usar un sufijo luego del signo peso
# Por ejemplo, queremos extraer la columna del peso
base$Weight
base[base$Gender == "F",]
# La condición expresa que el sexo debe ser femenino, el cual recordemos es un caracter,
# además, la igualdad se debe escribir con el signo '=='.
# Igualmente sirve
base[base$Height > 1.82 | base$Weight > 55, c(1,2)]
base$Edad = c(35,21,34,66,61,18)
base
Para guardar los cambios, siempre se debe sobreescribir el objeto que se utiliza, en caso
contrario, lo realizado solo se proyectará en consola (justo como el último ejemplo en el que
eliminó la columna 2; si consultamos la base se verá que no ha sufrido cambios).
base
colnames(base)[1] = "Sexo"
base
# O podemos todas, dándole a R un vector con todos los nombres que debe considerar
colnames(base) = c("Gender", "Altura", "Peso", "Age")
base
# Es posible revisar los nombres de las columnas con el comando 'colanmes( )'
colnames(base)
# Para obtener un resumen general de los datos que hay un data frame
# es posible usar el comando 'str( )'
## Ejercicios
Para este ejercicio trabajaremos con el conjunto de datos conocido como Fisher's iris data.
Este conjunto nos da la medida en cm. de las variables longitud y ancho de sépalo y pétalo
para un total de 150
ores de tres especies diferentes (setosa, versicolor y virginica). Para acceder a los datos en
R usaremos: data(iris).
1. ¿Cuántas fi
las y columnas posee la base de datos?
2. ¿Qué nombre tienen las variables (columnas) en la base de datos?
3. ¿Cuántas
flores poseen una longitud de sépalo mayor a 5cm?
4. ¿Cuántas
flores poseen una longitud de pétalo menor a 5cm?
5. ¿Cuántas
flores poseen un pétalo más ancho que su sépalo?
6. ¿Cuál es la longitud y ancho de pétalo máximo y mínimo registrado en la base de datos
para el tipo de flor "virginica"?
7. Filtre una base de datos que contenga a las especies de "virginica" y "setosa".
7. En la base incial, convierta la columna de "Especie" en factor, de tal manera de que los
niveles tengan el orden: setosa, versicolor y virginica.