Introducción a la programación en R
Tipos de datos:
Las variables pueden almacenar datos de diferentes tipos. En R las variables no necesitan ser declaradas con cualquier tipo, incluso las variables pueden cambiar de tipo.
Tipos de datos básicos:
numeric
- (27, 03, 1990, 31.88, 32.10) - números reales.
integer
- (100, 1, 25800, 24, 33) - número enteros (subset de
numeric
)
character
- (“Alicia”, “programación”, “h”) - cadenas de texto -
string
. Están entre " "
logical
- (TRUE
, FALSE
, TRUE
, TRUE
, FALSE
) -
solo tiene dos posibles elementos TRUE
y FALSE
. Es un tipo de
datos boolean
. Note que no están entre " "
Con la función class()
determinamos el tipo de datos y las
siguientes funciones arrojan como resultado TRUE
o FALSE
al
preguntar el tipo dato de una variable:
is.numeric()
is.integer()
is.character()
is.logical()
Numeric:
x <- 22.5
print(x)
[1] 22.5
class(x)
is.numeric(x)
is.integer(x)
is.character(x)
is.logical(x)
Character o String:
x <- "Esta es una línea de código"
print(x)
[1] "Esta es una línea de código"
class(x)
is.numeric(x)
is.integer(x)
is.character(x)
is.logical(x)
Logical o Boolean:
x <- TRUE
print(x)
[1] TRUE
class(x)
is.numeric(x)
is.integer(x)
is.character(x)
is.logical(x)
Se puede convertir un tipo de dato a otro con las siguientes funciones:
as.numeric()
as.integer()
x <- 50.8
a <- as.integer(x)
print(a)
[1] 50
x <- FALSE
a <- as.numeric(x)
print(a)
[1] 0
0
es Falso.
1
es verdadero.
x <- TRUE
a <- as.numeric(x)
print(a)
[1] 1
Operaciones matemáticas en R:
R puede ser usado como calculadora:
+
- suma
-
- resta
*
- multiplicación
/
- división
^
- potencia
**
- potencia
sqrt
- raíz cuadrada.
max
- extraer el máximo de un conjunto de datos.
min
- extraer el mínimo de un conjunto de datos.
abs
- valor absoluto (positivo) de un número.
ceiling
- redondea un número al entero de arriba.
floor
- redondea un número al entero de abajo.
Operadores de comparación:
Se usan para comparar dos valores.
Operador |
Nombre |
Ejemplo |
---|---|---|
|
Igual |
|
|
No igual |
|
|
Mayor que |
|
|
Menor que |
|
|
Mayor o igual que |
|
|
Menor o igual que |
|
Vectores
Son una lista de elementos que son del mismo tipo.
Para crear un vector a partir de una lista de elementos se usa la
función c()
y cada elemento se debe separar por ,
numeros <- c(80, 15, 50)
print(numeros) # con la función print() aparece el index
[1] 80 15 50
otros_numeros <- 1:5
print(otros_numeros)
[1] 1 2 3 4 5
ciudades <- c("Medellín", "Cali", "Barranquilla", "Santa Marta")
print(ciudades)
[1] "Medellín" "Cali" "Barranquilla" "Santa Marta"
logico <- c(TRUE, FALSE, FALSE, TRUE, TRUE)
print(logico)
[1] TRUE FALSE FALSE TRUE TRUE
a <- c("Hola, mi número es:", 1254)
print(a)
[1] "Hola, mi número es:" "1254"
Convirtió el número en string.
class(a)
Para saber la cantidad de elementos en un vector se usa la función
length()
length(numeros)
length(otros_numeros)
length(ciudades)
length(logico)
length(a)
Para ordenar numéricamente o alfabéticamente los elementos de un vector
se usa la función sort()
sort(numeros)
sort(otros_numeros)
sort(ciudades)
sort(logico)
sort(a)
- 15
- 50
- 80
- 1
- 2
- 3
- 4
- 5
- 'Barranquilla'
- 'Cali'
- 'Medellín'
- 'Santa Marta'
- FALSE
- FALSE
- TRUE
- TRUE
- TRUE
- '1254'
- 'Hola, mi número es:'
Para acceder a los elementos de un vector se usa el número de index
entre []
. En R el primer index es 1, en Python es 0.
ciudades[1]
# elementos entre el 1 y el 3
ciudades[1:3]
- 'Medellín'
- 'Cali'
- 'Barranquilla'
# solo los elementos 1 y 3
ciudades[c(1,3)]
- 'Medellín'
- 'Barranquilla'
# Todos los elementos exepto el primero
ciudades[c(-1)]
- 'Cali'
- 'Barranquilla'
- 'Santa Marta'
# Todos los elementos exepto el tercero
ciudades[c(-3)]
- 'Medellín'
- 'Cali'
- 'Santa Marta'
# Para cambiar el valor de un elemento
ciudades[1] <- "Rionegro"
print(ciudades)
[1] "Rionegro" "Cali" "Barranquilla" "Santa Marta"
![Matríz-Array](../../_images/mat_array.png)
Matríz-Array
Matrices
Un matriz es un conjunto de datos de dos dimensiones con filas y columnas.
Para crear una matriz se usa la función matrix()
y se especifica la
cantidad de filas nrow
y de columnas ncol
.
matriz <- matrix(1:6, nrow = 3, ncol = 2)
print(matriz)
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
otra_matriz <- matrix(1:18, 6, 3) # no se usaron nrow y ncol
print(otra_matriz)
[,1] [,2] [,3]
[1,] 1 7 13
[2,] 2 8 14
[3,] 3 9 15
[4,] 4 10 16
[5,] 5 11 17
[6,] 6 12 18
otra_matriz <- matrix(1:18, nrow=2) # los 18 valores los organiza en dos filas
print(otra_matriz)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 1 3 5 7 9 11 13 15 17
[2,] 2 4 6 8 10 12 14 16 18
otra_matriz <- matrix(1:18, ncol=6) # los 18 valores los organiza en seis columnas
print(otra_matriz)
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] 1 4 7 10 13 16
[2,] 2 5 8 11 14 17
[3,] 3 6 9 12 15 18
frutas <- matrix(c("manzana", "pera", "banano", "fresa", "uva", "piña"), 3, 2)
print(frutas)
[,1] [,2]
[1,] "manzana" "fresa"
[2,] "pera" "uva"
[3,] "banano" "piña"
Para acceder a los elementos de una matriz se [ , ]
. En el primer
campo se especifica la posición de las filas y las columnas en el
segundo.
frutas[2, 1]
# Todos los elementos de la fila 2
frutas[2,]
- 'pera'
- 'uva'
# Todos los elementos de la columna 1
frutas[,1]
- 'manzana'
- 'pera'
- 'banano'
# Filas entre la 2 y la 3 con todas las columnas
print(frutas[2:3,])
[,1] [,2]
[1,] "pera" "uva"
[2,] "banano" "piña"
# Solo filas 1 y 3 con todas las columnas
print(frutas[c(1,3),])
[,1] [,2]
[1,] "manzana" "fresa"
[2,] "banano" "piña"
Note que el resultado es otra matriz de 2x2.
Agregar filas y columnas
Se usa la función cbind()
para adicionar columnas en una matriz.
Se usa la función rbind()
para adicionar filas en una matriz.
frutas <- cbind(frutas, c("cereza", "mango", "sandia"))
print(frutas)
[,1] [,2] [,3]
[1,] "manzana" "fresa" "cereza"
[2,] "pera" "uva" "mango"
[3,] "banano" "piña" "sandia"
frutas <- rbind(frutas, c("limon", "mora", "naranja"))
print(frutas)
[,1] [,2] [,3]
[1,] "manzana" "fresa" "cereza"
[2,] "pera" "uva" "mango"
[3,] "banano" "piña" "sandia"
[4,] "limon" "mora" "naranja"
frutas <- cbind(frutas, "frutas")
print(frutas)
[,1] [,2] [,3] [,4]
[1,] "manzana" "fresa" "cereza" "frutas"
[2,] "pera" "uva" "mango" "frutas"
[3,] "banano" "piña" "sandia" "frutas"
[4,] "limon" "mora" "naranja" "frutas"
frutas <- rbind(frutas, "frutas")
print(frutas)
[,1] [,2] [,3] [,4]
[1,] "manzana" "fresa" "cereza" "frutas"
[2,] "pera" "uva" "mango" "frutas"
[3,] "banano" "piña" "sandia" "frutas"
[4,] "limon" "mora" "naranja" "frutas"
[5,] "frutas" "frutas" "frutas" "frutas"
Remover filas y columnas
Para eliminar filas y columnas se usa -
y el número de la fila o
columna a eliminar
frutas <- frutas[-1, -1]
print(frutas)
[,1] [,2] [,3]
[1,] "uva" "mango" "frutas"
[2,] "piña" "sandia" "frutas"
[3,] "mora" "naranja" "frutas"
[4,] "frutas" "frutas" "frutas"
frutas <- frutas[-3,]
print(frutas)
[,1] [,2] [,3]
[1,] "uva" "mango" "frutas"
[2,] "piña" "sandia" "frutas"
[3,] "frutas" "frutas" "frutas"
frutas <- frutas[,-2]
print(frutas)
[,1] [,2]
[1,] "uva" "frutas"
[2,] "piña" "frutas"
[3,] "frutas" "frutas"
Dimensión de una matriz
Para conocer el número de filas y columnas se usa la función dim()
.
length()
muestra la cantidad de elementos.
nrow()
muestra la cantidad de filas.
ncol()
muestra la cantidad de columnas.
dim(otra_matriz)
- 3
- 6
length(otra_matriz)
nrow(otra_matriz)
ncol(otra_matriz)
Data Frame
Un Data Frame son datos como en formato de tabla. Puede tener diferentes
tipos de datos con la primera columna siendo un character
, pero cada
columna debe tener el mismo tipo de datos.
Se crean con la función data.frame()
df <- data.frame(
acciones = c("ECO", "PFB", "ISA"),
precio = c(3000, 35000, 22000),
cantidad = c(1000, 500, 800)
)
print(df)
acciones precio cantidad
1 ECO 3000 1000
2 PFB 35000 500
3 ISA 22000 800
dim(df)
- 3
- 3
Note que las filas están enumeradas y las columnas tienen nombres (acciones, precio y cantidad).
Para acceder a los elementos de Data Frame se [ , ]
, dobles [[]]
o $
para una sola columna.
print(df[1])
acciones
1 ECO
2 PFB
3 ISA
df[["acciones"]]
- ECO
- PFB
- ISA
Levels:
- 'ECO'
- 'ISA'
- 'PFB'
df$acciones
- ECO
- PFB
- ISA
Levels:
- 'ECO'
- 'ISA'
- 'PFB'
df[2,3]
print(df[,2:3])
precio cantidad
1 3000 1000
2 35000 500
3 22000 800
Con los Data Frames también se pueden usar las funciones length()
,
dim()
, ncol()
, nrow()
, rbind()
y cbind()