# Taller de Introducción A R

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 17

ESTADÍSTICA 1

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

R es un lenguaje de programación con uso orientado a estadística. Para hacer uso de R es


necesario una plataforma de visualización, para lo cual existen diversas alternativas. Para
efectos de este taller y de los posteriores, se hará uso de Google Colab (plataforma gratuita
y online).

## 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)

# Suma, resta, multiplicación y división de dos números cualquiera

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

R considera operadores que permiten asignar valores a un objeto, es decir, "guardar el


número con un nombre". Hay dos opciones, para esto, <- o =. Es importante que el nombre
de la variable colo incluya carácteres alfa-numéricos y el punto (.). Los nombres no pueden
incluir espacios en blanco o comenzar con un número.

# Guardamos el resultado de la siguiente suma en un objeto llamado "valor"


valor = 2 + 3

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

También es posible ejecutar todo en una misma celda de código.

# Si escribo otra variable llamada "valor", el resultado anterior se pierde


valor = 3 + 4
valor
7

#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

abs(y) # Función de valor absoluto

# 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.

Dentro de los tipos de datos que podemos guardar veremos dos:

- 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

### 5.1 Vectores:


- El comando en R para elaborar un vector es 'c( )'.
- Corresponde a una secuencia de elementos de la misma naturaleza.

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

# Podemos consultar una posición dentro de un vector


# Generamos una secuencia de 12 números entre el 1 y el 10
# Además, lo guardamos en un objeto

ejemplo = seq(from = 1, to = 10, length = 12)

# Consultamos directamente el valor que está en la tercera posición


ejemplo[3]
ejemplo[c(1 , 4 ,6)]
# SI QUIERO ELIMINAR UN NUMERO EN ESA SECUENCIA, METO EL NUMERO CON
UN MENOS "-"
ejemplo[-2]
ejemplo[-c(1,2,3)]
#ESTO SIRVE PARA ELIMINAR UNA SECUENCIA -------- MAYBE NOT
ejemplo[-(1:3)]
#HAY MAS EJEMPLOS ABAJO

#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

# Observemos el vector completo de la secuencia anterior


ejemplo

11.818181818181822.636363636363643.454545454545454.272727272727275.090909090
909095.909090909090916.727272727272737.545454545454558.363636363636369.18181
81818181810

# Podemos eliminar un elemento utilizando la posición


# Eliminamos el primer valor de la secuencia
ejemplo[-1]

1.818181818181822.636363636363643.454545454545454.272727272727275.0909090909
09095.909090909090916.727272727272737.545454545454558.363636363636369.181818
1818181810

# Podemos eliminar más de uno al mismo tiempo


# El primer, quinto y sexto valor
ejemplo[-c(1,5,6)]

1.818181818181822.636363636363643.454545454545455.909090909090916.7272727272
72737.545454545454558.363636363636369.1818181818181810

# También es posible generar repeticiones


# Repetimos la palabra UDP 5 veces
rep(
x = "UDP", # Número o caracter a repetir
times = 5 # Cantidad de repeticiones O LA CANTIDAD DE VECES Q SE REPITA
)

'UDP''UDP''UDP''UDP''UDP'

# Podemos generar repeticiones por grupo


rep(
x = c("Hola", "Mundo"), # Vector (de números o palabras) que voy a repetir
times = 2 # Cantidad de veces que se repite el vector completamente
)

'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.
)

# Los vectores también se pueden operar entre si


# Lo importante es que tengan el mismo largo
x = c(1,2,3,-4,4,6)
y = c(1,4,2,0,0,-1)

# Las operaciones se realizan por orden, es decir,


# El primer elemento se suma con el primero, y así sucesivamente

# Suma
x+y

2-6-5 -4 - 4 - 5

# Resta
x-y

0 -2 1 -4 4 7

y + 5 # A cada elemento de y le suma 5

6 9 7 5 5 4

# Multiplicación
x*y

1 8 6 0 0 -6

2*x # A todos los elementos de x los multiplica por 2

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

1 0,5 1,5 -inf inf -6


y/3 # A cada elemento de y lo divide por 3

0.3333333333333331.333333333333330.66666666666666700

# Es posible encontrar el valor máximo y mínimo presente en un vector de la siguiente


manera

max(x) # Valor máximo en el vector x


min(y) # Valor mínimo en el vector y

# Es posible generar vectores de número aleatorios


# Números reales
#generamos 7 datos de una distribución uniforme en el intervalo (1,5)
numeros = runif(
n = 10, # Cantidad de números
min = 1, # Número mínimo a generar
max = 6 # Número máximo a generar
)
numeros

—---------------------------------—------------------------------------------------------------------------------------

##ESTE EJERCICIO ERA DE R## -> 1ER SEMESTRE "PROGRAMACIÓN"


#fijamos la semilla en 5
set.seed(5)
runif(n=7, min=1, max=5)

# 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
)

# También podemos generar números enteros de esta forma


sample(
x = 2:9, # Intervalo de números que dese generar, del 2 al 9
size = 10, # Cantidad de números que deseo generar
replace = TRUE # Indica si los números a generar se pueden repetir, TRUE = si, FALSE =
no
)

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

1. Defina los siguientes vectores. Inténtelo hacerlo de diferentes formas.

- 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

v = rep(c(3,2), times = c(9,2))


length(v)
11

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

1. Defina los siguientes vectores. Inténtelo hacerlo de diferentes formas.

- 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

1. Defina los siguientes vectores. Inténtelo hacerlo de diferentes formas.

- 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

### 5.2 Matrices:

- El comando en R para elaborar una matriz es 'matrix( )'.


- Corresponde a una tabla de dos dimensiones de elementos de la misma naturaleza
(números o carácteres pero no ambos).

#creamos una base de datos

# Generamos una matriz y la guardamos en un objeto llamado 'y'


y = matrix(
1:12, # Números con los que rellenaremos la matriz
nrow = 4, # Cantidad de filas de la matriz
ncol = 3, # Cantidad de columnas de la matriz
byrow = TRUE # Indica si la matriz debe ser rellenada por filas (puede ser también por
columnas)
)
y

# Si cambiamos el argumento byrow a FALSE, veremos que la matriz resultante es diferente


z = matrix(
1:12, # Números con los que rellenaremos la matriz
nrow = 4, # Cantidad de filas de la matriz
ncol = 3, # Cantidad de columnas de la matriz
byrow = TRUE # Indica si la matriz debe ser rellenada por filas (puede ser también por
columnas)
)
z

# Podemos extraer un valor de la matriz indicando la fila y la columna


# Usaremos la matriz 'z'
# Consultaremos el calor que está en la segunda fila y tercera columna
z[2,3]
# El primer número siempre corresponde a la fila y el segundo a la columna

# Podemos consultar filas completas


# Consultaremos la primer fila, para ello, en el número de columna no ingresamos nada
z[1,]

123

# De igual manera, podemos consultar los valores de una columna completa


# Consultaremos los valores de la tercera columna
z[,3]

3 6 9 12

# Es posible generar matrices, "pegando" vectores


# Es importante que los vectores tengan el mismo largo (cantidad de elementos)
x = c(1,2,3,4)
y = c(5,1,2,0)

# Podemos pegar verticalmente


cbind(x,y)

# 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.

2. Acceder al elemento de la segunda fila y tercera columna

3. Genere tres vectores de 8 números aleatorios entr -2 y 4. Luego, únalos verticalmente


para crear una matriz.

4. De la matriz generada en la pregunta 3, ontenga una nueva matriz que no tenga la


primera columna.
4. De la matriz generada en la pregunta 3, ontenga una nueva matriz que no tenga la
tercera columna. SUme esta matriz con la obtenida en la pregunta 4.

### 5.3 Factor:


- El comando en R para elaborar una factor es 'factor( )'.
- Es un vector de caracteres que poseen niveles de orden.

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

### 5.4 Data frame:


- El comando en R para elaborar un *data frame* es 'data.frame( )'.
- Corresponde a una tabla de dos dimensiones. Las columnas pueden ser de diferente
naturaleza, pero deben tener el mismo largo.

# Tenemos un data.frame (base de datos) que


# contiene el sexo, altura y peso
# de 6 personas (cantidad de datos por cada vector)

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

##ejemplo cpmpleto de sofi##

#creamos una base de datos


mascotas= data.frame("nombre"=
c("Mateo","Rayo","Negra","Kira","Caco","Bigotes"),"tipo"=c("perro","perro","perro","gato","per
ro","conejo"), "edad"=c(6,6,7,0.5,5,9))
mascotas
mascotas$nombre #extrae la columna "nombre"
#filtremos solo las filas del tipo="perro"

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 consultar las dimensiones del data.frame


dim(base)
# 6 filas y 3 columnas

# 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

# Es posible filtrar toda la tabla en base a un criterio de alguna de las columnas


# Por ejemplo, ver solo la información de las mujeres
# Para ello debemos escribir las codiciones antes de la coma, tal como se muestra

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 '=='.

# Podemos hacer un dopble filtro.


# Podemos consultar la información de las mujeres, pero solo la altura.
# Para ello ocupamos el segundo espacio, luego de la coman. Allí, se debe
# ingresar la columna que desea extraer luedo de aplicado el filtro

base[base$Gender == "F", "Height"]

# Otro forma de hacerlo, es ingresando el número de la columna


base[base$Gender == "F", 2]

# Aquí hay otros ejemplos de condiciones y consiciones múltiples

# Información de solo mujeres y con altura mayor a 1.6


base[base$Gender == "F" & base$Height > 1.6,]

# Información de personas y con altura mayor a 1.82 o peso mayor a 55


base[base$Height > 1.82 | base$Weight > 55,]

# Información de personas y con altura mayor a 1.82 o peso mayor a 55


# Pero solo el sexo
base[base$Height > 1.82 | base$Weight > 55, "Gender"]

# Información de personas y con altura mayor a 1.82 o peso mayor a 55


# Pero solo el sexo y la altura
base[base$Height > 1.82 | base$Weight > 55, c("Gender", "Height")]

# Igualmente sirve
base[base$Height > 1.82 | base$Weight > 55, c(1,2)]

# SI tengo muchas condiciones de un mismo valor, puedo incluirlas todas al mismo


# de la siguiente manera

# Por ejemplo, filtrar solo aquellas personas con altura 66, 58 y 75


base[base$Weight %in% c(66,58,75),]

# El comando %in% verifica si cada observación (fila) de la variable elegida


# Esta dentro de las opciones dadas.

# Es posible agregar una nueva columan en un data.frame de manera directa


# Se debe tener cuidado en que tienen que tener la misma cantidad de observaciones
# que las columnas ya presentes.

base$Edad = c(35,21,34,66,61,18)
base

# Se puede eliminar una columna al igual que en matrices


base[,-2] # Eliminamos la columna 2

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

# Es posible cambiar los nombre de la columnas


# Podemos cambiar una en específico
# Por ejemplo la primera

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.

# Esta base de datos está incorporada en R


datos = iris
colnames(datos) = c("LargoSepalo", "AnchoSepalo", "LargoPetalo", "AnchoPetalo",
"Especie")
datos

También podría gustarte