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)
'numeric'
is.numeric(x)

is.integer(x)

is.character(x)

is.logical(x)
TRUEFALSEFALSEFALSE

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)
'character'
is.numeric(x)

is.integer(x)

is.character(x)

is.logical(x)
FALSEFALSETRUEFALSE

Logical o Boolean:

x <- TRUE
print(x)
[1] TRUE
class(x)
'logical'
is.numeric(x)

is.integer(x)

is.character(x)

is.logical(x)
FALSEFALSEFALSETRUE

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

x == y

!=

No igual

x != y

>

Mayor que

x > y

<

Menor que

x < y

>=

Mayor o igual que

x >= y

<=

Menor o igual que

x <= y

Operadores lógicos:

Se usan para combinar dos declaraciones.

& - AND

| - OR

! - NOT

Estructuras de datos

Vector

Vector

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

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

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)
  1. 15
  2. 50
  3. 80
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  1. 'Barranquilla'
  2. 'Cali'
  3. 'Medellín'
  4. 'Santa Marta'
  1. FALSE
  2. FALSE
  3. TRUE
  4. TRUE
  5. TRUE
  1. '1254'
  2. '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]
'Medellín'
# elementos entre el 1 y el 3

ciudades[1:3]
  1. 'Medellín'
  2. 'Cali'
  3. 'Barranquilla'
# solo los elementos 1 y 3

ciudades[c(1,3)]
  1. 'Medellín'
  2. 'Barranquilla'
# Todos los elementos exepto el primero

ciudades[c(-1)]
  1. 'Cali'
  2. 'Barranquilla'
  3. 'Santa Marta'
# Todos los elementos exepto el tercero

ciudades[c(-3)]
  1. 'Medellín'
  2. 'Cali'
  3. 'Santa Marta'
# Para cambiar el valor de un elemento

ciudades[1] <- "Rionegro"
print(ciudades)
[1] "Rionegro"     "Cali"         "Barranquilla" "Santa Marta"
Matríz-Array

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 nrowy 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]
'pera'
# Todos los elementos de la fila 2

frutas[2,]
  1. 'pera'
  2. 'uva'
# Todos los elementos de la columna 1

frutas[,1]
  1. 'manzana'
  2. 'pera'
  3. '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)
  1. 3
  2. 6
length(otra_matriz)
18
nrow(otra_matriz)
3
ncol(otra_matriz)
6

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)
  1. 3
  2. 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"]]
  1. ECO
  2. PFB
  3. ISA
Levels:
  1. 'ECO'
  2. 'ISA'
  3. 'PFB'
df$acciones
  1. ECO
  2. PFB
  3. ISA
Levels:
  1. 'ECO'
  2. 'ISA'
  3. 'PFB'
df[2,3]
500
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()