PRIMEROS PASO EN R

INTRODUCCIÓN A R

R es un lenguaje de programación de alto nivel …

Caracteristicas de R

  • Interpretado (no compilado)
  • Open Source
  • Comunidad activa
# Versión
R.version.string
## [1] "R version 4.5.0 (2025-04-11 ucrt)"
# Información completa
R.version
##                _                                
## platform       x86_64-w64-mingw32               
## arch           x86_64                           
## os             mingw32                          
## crt            ucrt                             
## system         x86_64, mingw32                  
## status                                          
## major          4                                
## minor          5.0                              
## year           2025                             
## month          04                               
## day            11                               
## svn rev        88135                            
## language       R                                
## version.string R version 4.5.0 (2025-04-11 ucrt)
## nickname       How About a Twenty-Six

Directorio de trabajo

# observar el directorio 
getwd()
## [1] "C:/Users/MARYORIE/Downloads"
#Cambiar el directorio
setwd("C:/Users/MARYORIE/Downloads")

getwd()
## [1] "C:/Users/MARYORIE/Downloads"
# Asignar el directorio automaticamente donde se encuentra el documento guardado.
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
getwd()
## [1] "C:/Users/MARYORIE/Downloads"

Operaciones básica

#Suma
9+7
## [1] 16
#Resta
85-41
## [1] 44
# Multiplicación
8*5
## [1] 40
# División 
51/7
## [1] 7.285714
# Parentesis modifica el orden
87/(5+9)
## [1] 6.214286
# Potenciación
6^3
## [1] 216
# Potenciación (mas usada)
6**3
## [1] 216
# Resto y división entera
17%%5
## [1] 2
17%/%5
## [1] 3

Funciones matemáticas

# Raiz cuadrada
sqrt(73)
## [1] 8.544004
# Valor absoluto
abs(-73)
## [1] 73
# Función trigonometrica - seno(pi)
sin(pi/2)
## [1] 1
# Función trigonometrica - coseno
cos(0)
## [1] 1
# Logaritmo
log(10)
## [1] 2.302585
#logaritmo base 10
log10(100)
## [1] 2
log(10, base=4)
## [1] 1.660964
#exponencial
exp(1)
## [1] 2.718282
#otras funciones: round()
round(pi,2) # round(digits=2, x=pi)
## [1] 3.14

Notación cientifica

# Número grande
2324511042900
## [1] 2.324511e+12
# Número muy pequeño
0.000000002581
## [1] 2.581e-09
# Forzar notación cientifica
format(123456, scientific=TRUE)
## [1] "1.23456e+05"
# Suprimir notación cientifica
options(scipen = 999)
2324511042900
## [1] 2324511042900
# Restaurar
options(scipen = 0)
2324511042900
## [1] 2.324511e+12

Sistema de ayuda

# Ayuda en funciones especificas
?sqrt
help(sqrt)

# Buscar documentación
??sqrt
help.search("sqrt")

# Ayuda sobre operadores
?"**"
help("**")

# Ejemplo de alguna función
example(abs)
## 
## abs> require(stats) # for spline
## 
## abs> require(graphics)
## 
## abs> xx <- -9:9
## 
## abs> plot(xx, sqrt(abs(xx)),  col = "red")

## 
## abs> lines(spline(xx, sqrt(abs(xx)), n=101), col = "pink")
# Argumento de la función
args(abs)
## function (x) 
## NULL
args(round)
## function (x, digits = 0, ...) 
## NULL

Aplicaciones numéricas, aritmética y asignación

Asignación

# Para asignar tradicionalmente ">-")
x <- 20
# Mostrar
x
## [1] 20
print(x)
## [1] 20
# Método alternativo "="
y = 30
y
## [1] 30
# Asignación hacia la derecha
40 -> Z
40
## [1] 40
# Mostrar valor al asignar (de manera inmediata)
(w <- 50)
## [1] 50

Palabras reservadas

TRUE, FALSE, NULL, INF, NaN, NA…

?reserved

Gestión del workspace

# Listar todo lo que se tienes guardado
ls()
## [1] "w"  "x"  "xx" "y"  "Z"
# Obtener información (estructura) objeto
str(x)
##  num 20
# Eliminar objetos especifcos
rm(y)

# Eliminar todo
rm(list=ls())

Vectores y escalares

Escalar

# Asignar 
edad<-20

Vector

Es una secuencia de datos, que tiene un mismo tipo de dato

# Creación de un vector
vector <- c(21,23,25,27,29)
vector
## [1] 21 23 25 27 29
# Crear un vector de caracteres
color <- c("rojo", "Azul","verde")
color
## [1] "rojo"  "Azul"  "verde"
# Crear un vector a partir de calculos
vector3 <- c(74+5, sqrt(25), abs(-23), 84/7)
vector3
## [1] 79  5 23 12
# Combinar vectores
v1<-c(1,2,3)
v2<-c(4,5,6)
v3 <- c(v1,v2)
v3
## [1] 1 2 3 4 5 6
# Clase de un vector
class(vector)
## [1] "numeric"
class(vector3)
## [1] "numeric"
class(color)
## [1] "character"
class(v3)
## [1] "numeric"
vector4<-c(40,"Hola", 50)
vector4
## [1] "40"   "Hola" "50"
class(vector4)
## [1] "character"

operador para secuencias

#Secuencias enteras de datos (inicio:fin)
1:10
##  [1]  1  2  3  4  5  6  7  8  9 10
# Secuencias descendente
15:10
## [1] 15 14 13 12 11 10
# Negativos
-5:5
##  [1] -5 -4 -3 -2 -1  0  1  2  3  4  5
# secuencia con decimales
1.5:5.8
## [1] 1.5 2.5 3.5 4.5 5.5

utilizando la función seq

# por incremento especifico
seq(from=0, to=10, by=2)
## [1]  0  2  4  6  8 10
seq(from=0, to=10, by=0.2)
##  [1]  0.0  0.2  0.4  0.6  0.8  1.0  1.2  1.4  1.6  1.8  2.0  2.2  2.4  2.6  2.8
## [16]  3.0  3.2  3.4  3.6  3.8  4.0  4.2  4.4  4.6  4.8  5.0  5.2  5.4  5.6  5.8
## [31]  6.0  6.2  6.4  6.6  6.8  7.0  7.2  7.4  7.6  7.8  8.0  8.2  8.4  8.6  8.8
## [46]  9.0  9.2  9.4  9.6  9.8 10.0
# Por número de elemento
seq(from =0, to =10, length.out=20)
##  [1]  0.0000000  0.5263158  1.0526316  1.5789474  2.1052632  2.6315789
##  [7]  3.1578947  3.6842105  4.2105263  4.7368421  5.2631579  5.7894737
## [13]  6.3157895  6.8421053  7.3684211  7.8947368  8.4210526  8.9473684
## [19]  9.4736842 10.0000000
# Generar sequencia de manera descendente
seq(from=10,to=0, by=-1)
##  [1] 10  9  8  7  6  5  4  3  2  1  0

Función de repetición

# Repetir un valor
rep(20, times=5)
## [1] 20 20 20 20 20
# repetir un vector completo
rep(c(21,23), each=3)
## [1] 21 21 21 23 23 23
# Combinar times y each
rep(c("Rojo","Azul"),times=3, each=2)
##  [1] "Rojo" "Rojo" "Azul" "Azul" "Rojo" "Rojo" "Azul" "Azul" "Rojo" "Rojo"
## [11] "Azul" "Azul"

indexación

# longitud de un vector
length(vector)
## [1] 5
# extraer un elemento
vector5<-c(14,15,18,19,21)
# Extraer el elemento de la posición 1
vector5[1]
## [1] 14
# Extraer el 3er elemento
vector5[3]
## [1] 18
# Extraer secuencia de elemento desde 2 hasta  4
vector5[2:4]
## [1] 15 18 19
# Extraer el 1, el 3er y último elemento
vector5[c(1,3,5)]
## [1] 14 18 21
# Extraer en orden inverso
vector5[-1]
## [1] 15 18 19 21

Matrices y arreglos

# Generar matriz
matrix(1:16, nrow=4)
##      [,1] [,2] [,3] [,4]
## [1,]    1    5    9   13
## [2,]    2    6   10   14
## [3,]    3    7   11   15
## [4,]    4    8   12   16
matrix(1:16, nrow=4, byrow = TRUE)
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
mi_matriz = matrix(1:16, nrow=4, byrow = TRUE)
mi_matriz
##      [,1] [,2] [,3] [,4]
## [1,]    1    2    3    4
## [2,]    5    6    7    8
## [3,]    9   10   11   12
## [4,]   13   14   15   16
# Funciones básicas
# dimensiones
dim(mi_matriz)
## [1] 4 4
nrow(mi_matriz)
## [1] 4
ncol(mi_matriz)
## [1] 4
# Indexación
matriz2<-matrix(1:20, nrow=4, byrow = TRUE)
matriz2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## [2,]    6    7    8    9   10
## [3,]   11   12   13   14   15
## [4,]   16   17   18   19   20
# Extrer el 7
matriz2[2,2]
## [1] 7
# Extrer el 7
matriz2[4,5]
## [1] 20

Broadcasting (operaciones)

matriz2+10
##      [,1] [,2] [,3] [,4] [,5]
## [1,]   11   12   13   14   15
## [2,]   16   17   18   19   20
## [3,]   21   22   23   24   25
## [4,]   26   27   28   29   30
matriz2**2
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    4    9   16   25
## [2,]   36   49   64   81  100
## [3,]  121  144  169  196  225
## [4,]  256  289  324  361  400
# Multiplicación matricial
matriz1<-matrix(1:12, nrow = 4)
matriz1
##      [,1] [,2] [,3]
## [1,]    1    5    9
## [2,]    2    6   10
## [3,]    3    7   11
## [4,]    4    8   12
matriz2<-matrix(13:24, nrow = 3)
matriz2
##      [,1] [,2] [,3] [,4]
## [1,]   13   16   19   22
## [2,]   14   17   20   23
## [3,]   15   18   21   24
matriz1%*%matriz2
##      [,1] [,2] [,3] [,4]
## [1,]  218  263  308  353
## [2,]  260  314  368  422
## [3,]  302  365  428  491
## [4,]  344  416  488  560

Data frame

data.frame(matrix(1:16, nrow=4))
##   X1 X2 X3 X4
## 1  1  5  9 13
## 2  2  6 10 14
## 3  3  7 11 15
## 4  4  8 12 16
df <- data.frame(nombre=c("Maryorie", "Jorge"), edad=c(20,22))
df
##     nombre edad
## 1 Maryorie   20
## 2    Jorge   22
# Importar datos desde github
df_github<-read.csv("https://github.com/VictorGuevaraP/ME-Machine-Learning/raw/refs/heads/master/Churn.CSV",encoding = "latin1",sep = ";")
head(df_github)
##   ID.Cliente    Genero Mayor65años Socio Dependientes  MultipleLineas
## 1 7590-VHVEG  Femenino           0    Si           No No servicio tel
## 2 5575-GNVDE Masculino           0    No           No              No
## 3 3668-QPYBK Masculino           0    No           No              No
## 4 7795-CFOCW Masculino           0    No           No No servicio tel
## 5 9237-HQITU  Femenino           0    No           No              No
## 6 9305-CDSKC  Femenino           0    No           No              Si
##       Internet SeguridadOnline Backup ProteccionDispositivo
## 1          DSL              No     Si                    No
## 2          DSL              Si     No                    Si
## 3          DSL              Si     Si                    No
## 4          DSL              Si     No                    Si
## 5 Fibra Optica              No     No                    No
## 6 Fibra Optica              No     No                    Si
##   No.servicio.Internet TVPago PeliculasStreaming TerminoContrato
## 1                   No     No                 No       Mes a mes
## 2                   No     No                 No          Un año
## 3                   No     No                 No       Mes a mes
## 4                   Si     No                 No          Un año
## 5                   No     No                 No       Mes a mes
## 6                   No     Si                 Si       Mes a mes
##   FactElectronica               MetodoPago CargoMensual ImporteTotal pemanencia
## 1              Si       Cheque electronico        29.85        29.85          1
## 2              No            Cheque fisico           NA      1889.50         34
## 3              Si            Cheque fisico        53.85       108.15          2
## 4              No TransfBanca (automatica)        42.30      1840.75         45
## 5              Si       Cheque electronico        70.70       151.65          2
## 6              Si       Cheque electronico        99.65       820.50          8
##   ServicioTel Churn
## 1          No    No
## 2          Si    No
## 3          Si    Si
## 4        <NA>    No
## 5          Si    Si
## 6          Si    Si
# Importar datos desde kaggle

# Importar datos desde INEI

.