0% encontró este documento útil (0 votos)
156 vistas50 páginas

Fundamentos de Programación en R

Este documento presenta varios conceptos y funciones básicas de R para el aprendizaje autónomo, incluyendo la asignación y selección de elementos de vectores y matrices, condiciones lógicas, funciones matemáticas y estadísticas, y la creación y manipulación de vectores, matrices y secuencias numéricas. El documento también cubre temas como clases de datos, operaciones aritméticas y lógicas, y la importación y exportación de objetos entre el espacio de trabajo de R.

Cargado por

Alan Rock SliPk
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
156 vistas50 páginas

Fundamentos de Programación en R

Este documento presenta varios conceptos y funciones básicas de R para el aprendizaje autónomo, incluyendo la asignación y selección de elementos de vectores y matrices, condiciones lógicas, funciones matemáticas y estadísticas, y la creación y manipulación de vectores, matrices y secuencias numéricas. El documento también cubre temas como clases de datos, operaciones aritméticas y lógicas, y la importación y exportación de objetos entre el espacio de trabajo de R.

Cargado por

Alan Rock SliPk
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Trabajo de Programación

Alan Ulcuango
10/2/2020

Aprendizaje autónomo

Asignar un valor a una variable y saber tipo de variable

x<-2
x

## [1] 2
class(x)

## [1] "numeric"
mode(x)

## [1] "numeric"

Seleccionar un elementos del vector

x<-c(18,11,12,10,7,6,17)
x[c(1,2)]

## [1] 18 11

Condiciones para un vector

x[x>10]

## [1] 18 11 12 17
x[x<10]

## [1] 7 6
x[x=10]

## [1] NA

Exclusión de un elemento de un vector

x[-4]

## [1] 18 11 12 7 6 17
# o
x[c(-6)]

## [1] 18 11 12 10 7 17

1
Creación de una condición lógica del vector

x<10

## [1] FALSE FALSE FALSE FALSE TRUE TRUE FALSE

Creación de un vectores en varias variables

A<- 6
B<-7
C<-8
x<-c(A,B,C)
x

## [1] 6 7 8

Saber cuantos elementos tiene un vector

seq(from=10 , to=40 , by=10)

## [1] 10 20 30 40
x<- c(seq(from=10,by=10 , length.out=40))
x

## [1] 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170


## [18] 180 190 200 210 220 230 240 250 260 270 280 290 300 310 320 330 340
## [35] 350 360 370 380 390 400
length(x)

## [1] 40

Funciones rbind y cbind

x<-rbind(c(1:3),c(4:6))
x

## [,1] [,2] [,3]


## [1,] 1 2 3
## [2,] 4 5 6
x<-cbind(c(1:3),c(4:6))
x

## [,1] [,2]
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6

Función dim

2
x<-11:30
dim(x)<-c(4,5)
x

## [,1] [,2] [,3] [,4] [,5]


## [1,] 11 15 19 23 27
## [2,] 12 16 20 24 28
## [3,] 13 17 21 25 29
## [4,] 14 18 22 26 30

Clase 1

Valor absoluto

abs(-2)

## [1] 2

Factorial

factorial(3)

## [1] 6

Parte entera

floor(5.6)

## [1] 5

Redondear

ceiling(5.6)

## [1] 6

Cecuencia de 1 en 1

1:10

## [1] 1 2 3 4 5 6 7 8 9 10

Secuencia especializada

seq(1:10)

## [1] 1 2 3 4 5 6 7 8 9 10

3
Redondeo de un número

round(5.7);digits=0

## [1] 6

Repetir números 5 veces

rep(x=3, time=5)

## [1] 3 3 3 3 3
rep(3,5)

## [1] 3 3 3 3 3

Generar números aleatorios uniformes

a <- runif(n=10, min=1, max=5)


a

## [1] 2.030618 4.898380 4.084071 4.614757 4.615115 1.724180 1.570893


## [8] 2.798518 3.797004 3.578937
floor(a)

## [1] 2 4 4 4 4 1 1 2 3 3

Generar números aeatorios normal

d <- rnorm(n=10, mean = 100, sd=10)


print(d)

## [1] 103.91327 84.99947 88.85894 112.40487 82.83270 111.02018 95.68314


## [8] 82.95325 99.84828 94.72060
floor(d)

## [1] 103 84 88 112 82 111 95 82 99 94

Imprime el listado del sistema

ls()

## [1] "a" "A" "B" "C" "d" "digits" "x"


objects()

## [1] "a" "A" "B" "C" "d" "digits" "x"

4
Creación de una matriz

m <- 11:30
dim(m) <- c(4,5)
m

## [,1] [,2] [,3] [,4] [,5]


## [1,] 11 15 19 23 27
## [2,] 12 16 20 24 28
## [3,] 13 17 21 25 29
## [4,] 14 18 22 26 30
class(m)

## [1] "matrix"

Selección de elementos de una matriz

m[20]

## [1] 30
m[11]

## [1] 21

Creación de una matriz

m <- matrix(11:30,nrow=4,ncol=5,byrow = TRUE)


m

## [,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
m <- matrix(11:30,nrow=4,ncol=5,byrow = FALSE)
m

## [,1] [,2] [,3] [,4] [,5]


## [1,] 11 15 19 23 27
## [2,] 12 16 20 24 28
## [3,] 13 17 21 25 29
## [4,] 14 18 22 26 30

Creación de una matriz de ceros

m <- matrix(0,nrow=4,ncol=5,byrow = TRUE)


m

## [,1] [,2] [,3] [,4] [,5]


## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0

5
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0

Creación de una matriz con NA

m <- matrix(nrow=4,ncol=5)
m

## [,1] [,2] [,3] [,4] [,5]


## [1,] NA NA NA NA NA
## [2,] NA NA NA NA NA
## [3,] NA NA NA NA NA
## [4,] NA NA NA NA NA

Creación de secuencias

seq(from=1,to=60,by=2)

## [1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
## [24] 47 49 51 53 55 57 59
seq(1,60,2)

## [1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
## [24] 47 49 51 53 55 57 59

Creación de una matriz con secuencia


V <- matrix(seq(from=1,to=60,by=2),nrow=6,ncol = 5,byrow = TRUE)
V

## [,1] [,2] [,3] [,4] [,5]


## [1,] 1 3 5 7 9
## [2,] 11 13 15 17 19
## [3,] 21 23 25 27 29
## [4,] 31 33 35 37 39
## [5,] 41 43 45 47 49
## [6,] 51 53 55 57 59
V <- matrix(seq(from=1,to=60,by=2),nrow=6,ncol = 5,byrow = FALSE)
V

## [,1] [,2] [,3] [,4] [,5]


## [1,] 1 13 25 37 49
## [2,] 3 15 27 39 51
## [3,] 5 17 29 41 53
## [4,] 7 19 31 43 55
## [5,] 9 21 33 45 57
## [6,] 11 23 35 47 59
m <- matrix(rep(V),nrow = 6,ncol = 6,by=TRUE)
m

## [,1] [,2] [,3] [,4] [,5] [,6]


## [1,] 1 3 5 7 9 11

6
## [2,] 13 15 17 19 21 23
## [3,] 25 27 29 31 33 35
## [4,] 37 39 41 43 45 47
## [5,] 49 51 53 55 57 59
## [6,] 1 3 5 7 9 11

Nombrar las filas y columas de una matriz

rownames(m) <- c("uno","dos","tres","cuatro","cinco","seis")


colnames(m) <- c("uno","dos","tres","cuatro","cinco","seis")
m

## uno dos tres cuatro cinco seis


## uno 1 3 5 7 9 11
## dos 13 15 17 19 21 23
## tres 25 27 29 31 33 35
## cuatro 37 39 41 43 45 47
## cinco 49 51 53 55 57 59
## seis 1 3 5 7 9 11

Creación de una matriz con la función rbind

n <- rbind(1:2,2:1,c(1,2),c(2,1))
n

## [,1] [,2]
## [1,] 1 2
## [2,] 2 1
## [3,] 1 2
## [4,] 2 1
n <- rbind("a","b","b","a",c("a","b"),c("b","a"))
n

## [,1] [,2]
## [1,] "a" "a"
## [2,] "b" "b"
## [3,] "b" "b"
## [4,] "a" "a"
## [5,] "a" "b"
## [6,] "b" "a"

Operaciones con matrices

m <- rbind(c(2,3),c(3,2))
n <- rbind(c(1,2),c(2,1))
#Suma
m+n

## [,1] [,2]
## [1,] 3 5
## [2,] 5 3

7
m <- rbind(c(2,3),c(3,2))
n <- rbind(c(1,2),c(2,1))
#Multiplicación
m*n

## [,1] [,2]
## [1,] 2 6
## [2,] 6 2
m%*%n

## [,1] [,2]
## [1,] 8 7
## [2,] 7 8

Clase 2

Operaciones con variables

#Creación de una secuencia del 1 al 4


x<- 1:4
x

## [1] 1 2 3 4
#Asignamos valor a una variable
y <- 5
#Asignamos valor a z multiplicacando y*x
z<-y*x
z

## [1] 5 10 15 20
y*x

## [1] 5 10 15 20

Creación de un vector (Caractéres)

j<-c("A","B","C")
j

## [1] "A" "B" "C"

Repetir Z varias veces

rep(z , times=3)

## [1] 5 10 15 20 5 10 15 20 5 10 15 20
class(j)

## [1] "character"

8
class(z)

## [1] "numeric"

Operaciones con integer

p <- 23L
print(p)

## [1] 23
class(p)

## [1] "integer"
n<-as.integer(6/2);print(x)

## [1] 1 2 3 4
class(n)

## [1] "integer"

Operaciones con complex

u<- 21+2i
l<- 21+2i
r<-1+0i
tt<-sqrt(r)
u;l;r;tt

## [1] 21+2i
## [1] 21+2i
## [1] 1+0i
## [1] 1+0i
class(u)

## [1] "complex"

Clase 3

Creamos un vector

x<-c(11:14)
x

## [1] 11 12 13 14
u<-c(21:24)

z<-c("A","B","C","D")
z

9
## [1] "A" "B" "C" "D"
y<-c(x,21,31,x)
y

## [1] 11 12 13 14 21 31 11 12 13 14
# repetir el vector
rep(x,times=5)

## [1] 11 12 13 14 11 12 13 14 11 12 13 14 11 12 13 14 11 12 13 14
#repetir el elemento
rep(z,each=5)

## [1] "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "C" "C" "C" "C" "C" "D" "D"
## [18] "D" "D" "D"

Jerarquía de signos

## [1] 11 12 13 14
u

## [1] 21 22 23 24
u+3*x-1

## [1] 53 57 61 65

Impresión de vectores

s<-c(3,4,5)
s

## [1] 3 4 5
l<-c(5,4,3)
l

## [1] 5 4 3
lo<-c(s,l)
lo

## [1] 3 4 5 5 4 3

Inicializar un vector con el valor de 0

t<-vector("integer",0)
t

## integer(0)

10
Dar la dimension del vector

t<-vector("numeric",3)
t

## [1] 0 0 0
t<-vector("logical",3)
t

## [1] FALSE FALSE FALSE

Listar un número de elementos


by<-seq(from=4,by=2, length.out = 8)
by

## [1] 4 6 8 10 12 14 16 18

Contar elementos

length(by)

Creación de una cabecera para un data.frame

frutas<-c(15,100,2,30)
names(frutas)<-c("naranja","pera","manzana","durazno")
frutas<-c(naranja=15,pera=100,manzana=2,durazno=30)
frutas

## naranja pera manzana durazno


## 15 100 2 30
#Elegir un elemento del vector
print(frutas[2])

## pera
## 100
#cambiar valor de un vector
frutas["pera"]<- 1000
frutas

## naranja pera manzana durazno


## 15 1000 2 30

Clase 4

Valor absoluto

abs(-2)

## [1] 2

11
Factorial

factorial(3)

## [1] 6

Parte entera
floor(5.6)

## [1] 5

Redondeo

ceiling(2.65)

## [1] 3

Secuencia 1 en 1

1:5

## [1] 1 2 3 4 5

Secuencia especializada

seq(1.10)

## [1] 1

Redondeo de un numero

round(2.7 , digits = 0)

## [1] 3

Generar secuencia de 5 en 5

seq(from=0 , by=5 , length.out = 5)

## [1] 0 5 10 15 20

Generar aleatorios uniformes

runif(n=10 , min=1 , max=5)

## [1] 4.403973 4.643672 3.861787 2.631460 2.918323 3.356865 2.842806


## [8] 2.291870 3.677921 2.053205

12
Generar aleatorios uniformes tomar parte entera

x<-floor(runif(n=10 , min=1 , max=5))


plot(x)
4.0
3.5
3.0
2.5
x

2.0
1.5
1.0

2 4 6 8 10

Index

#graficar barras
barplot(x)

13
4
3
2
1
0

Generar aletarios normal

y<-rnorm(n=10 , mean=100 , sd=10)


#Gráfico de barras
barplot(y)

14
100 120
80
60
40
20
0

Matrices

#Dimension de matrices
a<- matrix(c(4,5))
a

## [,1]
## [1,] 4
## [2,] 5
dim(a)

## [1] 2 1
#Creación de una matriz ¿
b<-11:30
print(b)

## [1] 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
#Matriz de 4x5
dim(b)<- c(4,5)
b

## [,1] [,2] [,3] [,4] [,5]


## [1,] 11 15 19 23 27
## [2,] 12 16 20 24 28
## [3,] 13 17 21 25 29

15
## [4,] 14 18 22 26 30
#Matriz de 5x4
dim(b)<-c(5,4)
b

## [,1] [,2] [,3] [,4]


## [1,] 11 16 21 26
## [2,] 12 17 22 27
## [3,] 13 18 23 28
## [4,] 14 19 24 29
## [5,] 15 20 25 30
#Elemento especifico de la matriz
b[3,2]

## [1] 18
#Filas de la matriz
b[,4]

## [1] 26 27 28 29 30
#Columnas de la matriZ
b[4,]

## [1] 14 19 24 29
#Clase
class(b)

## [1] "matrix"
#Número de elementos de la matriz
length(b)

## [1] 20
#Elección de un elemento de la matriz
b[8]

## [1] 18
b[20]

## [1] 30

Creación de una matriz

a<- matrix(11:30,nrow=4 , ncol = 5 , byrow = TRUE)


a

## [,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
a<- matrix(11:30,nrow=4 , ncol = 5 , byrow = FALSE)
a

16
## [,1] [,2] [,3] [,4] [,5]
## [1,] 11 15 19 23 27
## [2,] 12 16 20 24 28
## [3,] 13 17 21 25 29
## [4,] 14 18 22 26 30
dim(a)

## [1] 4 5

Inicializar una matriz con 0

a<- matrix(0,nrow=4 , ncol = 5 , byrow = TRUE)


a

## [,1] [,2] [,3] [,4] [,5]


## [1,] 0 0 0 0 0
## [2,] 0 0 0 0 0
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0

Incremento de 2 en 2

seq(from=1 , by=2 , to=60)

## [1] 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45
## [24] 47 49 51 53 55 57 59

Función rbind

n<-rbind(1:2,2:1,c(1,2),c(2,1))
n

## [,1] [,2]
## [1,] 1 2
## [2,] 2 1
## [3,] 1 2
## [4,] 2 1

Operaciones de matrices

n<-rbind(c(2,3),c(3,2))
m<-rbind(c(1,2),c(2,1))
n

## [,1] [,2]
## [1,] 2 3
## [2,] 3 2
m

17
## [,1] [,2]
## [1,] 1 2
## [2,] 2 1
n*m

## [,1] [,2]
## [1,] 2 6
## [2,] 6 2
n+m

## [,1] [,2]
## [1,] 3 5
## [2,] 5 3
#multiplicacion de matrices
n%*%m

## [,1] [,2]
## [1,] 8 7
## [2,] 7 8

Clase 5

Primera forma de crear un data frame

Nombre<-c('Ana','Berni','Carlos')
Edad<-c(20,19,20)
Ciudad<-factor(c('Gye','Uio','Cue'))
df_1<-data.frame(Nombre,Edad,Ciudad)
df_1

## Nombre Edad Ciudad


## 1 Ana 20 Gye
## 2 Berni 19 Uio
## 3 Carlos 20 Cue

Segunda forma de crear un data frame

df_2<-data.frame(a=Nombre,b=Edad,c=Ciudad)
df_2

## a b c
## 1 Ana 20 Gye
## 2 Berni 19 Uio
## 3 Carlos 20 Cue

Tercera forma de crear un data frame

df_3<-data.frame(Nombre=c('Ana','Berni','Carlos'),
Edad=c(20,19,20),
Ciudad=factor(c('Gye','Uio','Cue')))
df_3

18
## Nombre Edad Ciudad
## 1 Ana 20 Gye
## 2 Berni 19 Uio
## 3 Carlos 20 Cue

Nombre de un data frame

rownames(df_3)<-paste('id_',1:3)
df_3

## Nombre Edad Ciudad


## id_ 1 Ana 20 Gye
## id_ 2 Berni 19 Uio
## id_ 3 Carlos 20 Cue

obs=sep da espacio en el id

rownames(df_3)<-paste('id_',1:3,sep = '')
df_3

## Nombre Edad Ciudad


## id_1 Ana 20 Gye
## id_2 Berni 19 Uio
## id_3 Carlos 20 Cue

Cambio de encabezado

names(df_3)<-c('Name','Age','City')
df_3

## Name Age City


## id_1 Ana 20 Gye
## id_2 Berni 19 Uio
## id_3 Carlos 20 Cue

Visualizar valores del data frame primeras filas

head(df_3,n=1) # OBS: indica la filas para mostrar n

## Name Age City


## id_1 Ana 20 Gye
#visualizar valores del data frame ultimas filas
tail(df_3,n=2)

## Name Age City


## id_2 Berni 19 Uio
## id_3 Carlos 20 Cue
str(df_3)

19
## 'data.frame': 3 obs. of 3 variables:
## $ Name: Factor w/ 3 levels "Ana","Berni",..: 1 2 3
## $ Age : num 20 19 20
## $ City: Factor w/ 3 levels "Cue","Gye","Uio": 2 3 1

data frame 4

df_4<-data.frame(Nombre=c('Padre','Madre','Hijo'),
cbind(c(1,2,3),c(30,26,9)),
c(1.80,1.72,1.05))
names(df_4)<-c('Familia','Ord','Edad','Estatura')
df_4

## Familia Ord Edad Estatura


## 1 Padre 1 30 1.80
## 2 Madre 2 26 1.72
## 3 Hijo 3 9 1.05

Listas

#listas
lista_1<-list(A=1,B=c(2,3),C=df_1)
lista_1$B

## [1] 2 3
lista_1$c

## NULL

Funciones

variable<-function(arg_1,arg_2,.....,arg_n)expression #<--- estructura de una funcion


#Ejemplo
hipotenusa<-function(x,y){
return(sqrt(x^2+y^2))
}
class(hipotenusa)

## [1] "function"
mode(hipotenusa)

## [1] "function"
hipotenusa(3,4)

## [1] 5
#segunda forma
hipotenusa(x=3,y=4)

## [1] 5

20
#tercera forma
x<-3
y<-4
hipotenusa(x,y)

## [1] 5
#Cuarta forma
hipotenusa<-function(x=3,y=4){
return(sqrt(x^2+y^2))
}
hipotenusa()

## [1] 5
#Quinta Forma
hipotenusa<-function(x,y){
cat("Ingrese el valor de x")
x<-scan(n = 1, quiet = T)
print("Ingrese el valor de y")
y<-scan(n = 1, quiet = T)
return(sqrt(x^2+y^2))
}

hipotenusa()

## Ingrese el valor de x[1] "Ingrese el valor de y"


## numeric(0)

Clase 6

Asignamos un valor a una variable

n<-10
n

## [1] 10

Vector impares y pares

pares<-c()
pares

## NULL
impares<-c()
impares

## NULL
#uso del for
for (i in 1:n){
if(i%%2==0){
pares<-c(pares,i)

21
}

else {
impares<-c(impares,i)
}

}
c<-rbind(pares,impares)
c

## [,1] [,2] [,3] [,4] [,5]


## pares 2 4 6 8 10
## impares 1 3 5 7 9
x<-pares+impares
x

## [1] 3 7 11 15 19
pares

## [1] 2 4 6 8 10
impares

## [1] 1 3 5 7 9

Condición while

i<-5
while(i>0){
cat("caso",i,"\t");
i<-i-1
}

## caso 5 caso 4 caso 3 caso 2 caso 1


#OBS: \N SALTO DE LINEA , \t tabulador

#funcion ifelse
y<- -5:5
y

## [1] -5 -4 -3 -2 -1 0 1 2 3 4 5
logy <- ifelse(y>0, y*log(y), 0)

## Warning in log(y): Se han producido NaNs


logy

## [1] 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000


## [8] 1.386294 3.295837 5.545177 8.047190
round(logy,2)

## [1] 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.39 3.30 5.55 8.05

22
Switch

switch (2,"1","2","3")

## [1] "2"
for (i in c(-1:3,9)) {
print(switch (i,1,2,3,4))}

## NULL
## NULL
## [1] 1
## [1] 2
## [1] 3
## NULL
#switch 2
switch ("tres",uno="1",dos="2",tres="3")

## [1] "3"
#switch 3
switch ("cuatro",uno="1",dos="2",tres="3",cuatro="4")

## [1] "4"
#switch 4
x<-0
switch (x,1,2,3)

Funciones

suma<-function(x,y){
z<-x+y
return(z)
}
suma(log(6),3)

## [1] 4.791759

Clase 7

Ejercicio con bucles for y while

miriam<-function(){
a<-c("c","l","i","M","I","A")
for (i in seq(from=0, to=length(a),by=2)){
print(a[i])
}
}
miriam()

## character(0)
## [1] "l"
## [1] "M"

23
## [1] "A"

Clase 8

Ejercicio 1

a<-vector(length = 10)
for(i in a){
for (j in sample(-100:100)) {

if(j>0 ){
a<-c(j)

}
print(a)
}

## [1] 70
## [1] 46
## [1] 19
## [1] 20
## [1] 89
## [1] 12
## [1] 31
## [1] 38
## [1] 70
## [1] 4

Serie Fibonacci

fibonacci<-function(n){
if(n %in% c(0,1))
return(1)

FO<-1; F1<-1;i<-2
repeat{
s<-FO+F1
if(i==n)
{
return(s)
}
FO<-F1
F1<-s
i<-i+1
}
}
fibonacci(8)

## [1] 34

24
Clase 9

Funcion NEXT

x<-c(1:20)
a<-c()
b<-c()
for (i in c(1:20)) {
if(i%%2==0){
a<-c(i)
print(a)
}
else{
b<-c(i)
print(b)
}
}

## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
#----forma 1
for(i in 1:7){
if(3<=i && i<= 6)
next
print(i)
}

## [1] 1
## [1] 2
## [1] 7
#----forma 2
for (i in 1:7) {
if (3<=i && i<=6) {
next
}

25
print(i)
}

## [1] 1
## [1] 2
## [1] 7

Par o impar

a<-c()
b<-c()
n=100
for(i in 1:n){
if(i%%2==0){
a<-c(i)
}
else{
b<-c(i)
}
print(a)
print(b)
}

## NULL
## [1] 1
## [1] 2
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 13
## [1] 14
## [1] 15

26
## [1] 16
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 17
## [1] 18
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 21
## [1] 22
## [1] 21
## [1] 22
## [1] 23
## [1] 24
## [1] 23
## [1] 24
## [1] 25
## [1] 26
## [1] 25
## [1] 26
## [1] 27
## [1] 28
## [1] 27
## [1] 28
## [1] 29
## [1] 30
## [1] 29
## [1] 30
## [1] 31
## [1] 32
## [1] 31
## [1] 32
## [1] 33
## [1] 34
## [1] 33
## [1] 34
## [1] 35
## [1] 36
## [1] 35
## [1] 36
## [1] 37
## [1] 38
## [1] 37
## [1] 38
## [1] 39
## [1] 40
## [1] 39
## [1] 40
## [1] 41
## [1] 42
## [1] 41

27
## [1] 42
## [1] 43
## [1] 44
## [1] 43
## [1] 44
## [1] 45
## [1] 46
## [1] 45
## [1] 46
## [1] 47
## [1] 48
## [1] 47
## [1] 48
## [1] 49
## [1] 50
## [1] 49
## [1] 50
## [1] 51
## [1] 52
## [1] 51
## [1] 52
## [1] 53
## [1] 54
## [1] 53
## [1] 54
## [1] 55
## [1] 56
## [1] 55
## [1] 56
## [1] 57
## [1] 58
## [1] 57
## [1] 58
## [1] 59
## [1] 60
## [1] 59
## [1] 60
## [1] 61
## [1] 62
## [1] 61
## [1] 62
## [1] 63
## [1] 64
## [1] 63
## [1] 64
## [1] 65
## [1] 66
## [1] 65
## [1] 66
## [1] 67
## [1] 68
## [1] 67
## [1] 68
## [1] 69

28
## [1] 70
## [1] 69
## [1] 70
## [1] 71
## [1] 72
## [1] 71
## [1] 72
## [1] 73
## [1] 74
## [1] 73
## [1] 74
## [1] 75
## [1] 76
## [1] 75
## [1] 76
## [1] 77
## [1] 78
## [1] 77
## [1] 78
## [1] 79
## [1] 80
## [1] 79
## [1] 80
## [1] 81
## [1] 82
## [1] 81
## [1] 82
## [1] 83
## [1] 84
## [1] 83
## [1] 84
## [1] 85
## [1] 86
## [1] 85
## [1] 86
## [1] 87
## [1] 88
## [1] 87
## [1] 88
## [1] 89
## [1] 90
## [1] 89
## [1] 90
## [1] 91
## [1] 92
## [1] 91
## [1] 92
## [1] 93
## [1] 94
## [1] 93
## [1] 94
## [1] 95
## [1] 96
## [1] 95

29
## [1] 96
## [1] 97
## [1] 98
## [1] 97
## [1] 98
## [1] 99
## [1] 100
## [1] 99
n<-20
for(i in 1:n){
for(j in 1:n){
if(j%%2==0 ){
a<-c(j)
}
else{
b<-c(j)
}

}
print(a)
print(b)
}

## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20

30
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19
## [1] 20
## [1] 19

Raíz cuadrada

#Metodo 1

modulo<-function(){
s<-0
for(i in c(-2,3,4)){

s<-s+i^2

}
print(s)
x<-sqrt(s)

print(x)}

modulo()

## [1] 29
## [1] 5.385165
#Metodo 2

vv<-c(-2, 3, 4)
modulo<-function(v){
s<-0
for (val in v) {
print(val)
s<-s+val^2
}
sqrt(s)
}
modulo(vv)

## [1] -2
## [1] 3
## [1] 4
## [1] 5.385165
#Metodo 3

x<-function(v){
sqrt(sum(v^2))
}

31
x(vv)

## [1] 5.385165

Suma

x<-function(v){
sum(v)/length(vv)
}
x(vv)

## [1] 1.666667

Clase 10

Función sample y range

z<-sample(c(1:400),90)
z

## [1] 289 119 322 57 365 396 65 84 48 291 392 383 375 381 380 147 174
## [18] 79 283 256 370 366 327 153 388 389 87 274 53 353 202 226 242 108
## [35] 328 341 304 186 321 104 107 374 393 369 19 28 109 190 314 329 197
## [52] 255 238 154 253 390 9 254 210 15 240 102 60 55 373 377 110 345
## [69] 394 44 248 124 100 141 337 58 77 294 218 89 14 275 350 116 356
## [86] 250 387 332 176 246
#Funcion range() da valores maximo y minimo del vector
range(z)

## [1] 9 396
#obtener el rango de un vector
(max(z)-min(z))

## [1] 387
#regla de sturgles valores agrupados
# c=1+3.3log(N)
c<-1+3.3*log(length(z)) #numero de clases
round(c,0)

## [1] 16
anchura<-(max(z)-min(z))/round(c,0)
anchura

## [1] 24.1875
lc<-seq(min(z),to=max(z),by=anchura)#obtencion de intervalos
l<-cut(z,lc,right=FALSE)
datos<-data.frame(transform(table(l),
Fre_re=prop.table(Freq),
Fre_acum=cumsum(prop.table(Freq)),
Porcent=round(prop.table(Freq)*100,2)))
datos

32
## l Freq Fre_re Fre_acum Porcent
## 1 [9,33.2) 5 0.05617978 0.05617978 5.62
## 2 [33.2,57.4) 5 0.05617978 0.11235955 5.62
## 3 [57.4,81.6) 5 0.05617978 0.16853933 5.62
## 4 [81.6,106) 6 0.06741573 0.23595506 6.74
## 5 [106,130) 7 0.07865169 0.31460674 7.87
## 6 [130,154) 4 0.04494382 0.35955056 4.49
## 7 [154,178) 2 0.02247191 0.38202247 2.25
## 8 [178,202) 4 0.04494382 0.42696629 4.49
## 9 [202,227) 3 0.03370787 0.46067416 3.37
## 10 [227,251) 6 0.06741573 0.52808989 6.74
## 11 [251,275) 6 0.06741573 0.59550562 6.74
## 12 [275,299) 4 0.04494382 0.64044944 4.49
## 13 [299,323) 4 0.04494382 0.68539326 4.49
## 14 [323,348) 7 0.07865169 0.76404494 7.87
## 15 [348,372) 7 0.07865169 0.84269663 7.87
## 16 [372,396) 14 0.15730337 1.00000000 15.73
pie(datos$Porcent)

5 4
6
7 3
8 2
9
1
10

11
16
12
13
14 15

hist(datos$Porcent,main="Numeros",col="magenta")

33
Numeros
7
6
5
Frequency

4
3
2
1
0

2 4 6 8 10 12 14 16

datos$Porcent

palette()

## [1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"


## [8] "gray"

Clase 11

Leer el archivo xlsx

library(readxl)

## Warning: package 'readxl' was built under R version 3.6.1


data_banco <- read_excel("C:/Users/Alan/Desktop/Data_Banco.xlsx", sheet = "Data" )
View(data_banco)

data_sucursal <- read_excel("C:/Users/Alan/Desktop/Data_Banco.xlsx", sheet = "Data_Sucursal" )


View(data_sucursal)

Ver las primeras n filas

head(data_sucursal, n=5)

## # A tibble: 5 x 3
## ID_Sucursal Sucursal Nuevo_Sistema

34
## <dbl> <chr> <chr>
## 1 62 Riocentro Sur No
## 2 85 Centro Si
## 3 267 Alborada Si
## 4 443 Mall del Sol Si
## 5 586 Via Daule No
head(data_banco, n=10)

## # A tibble: 10 x 7
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## 6 62 4820 2 Cobro/Pago~ 172 Bueno
## 7 62 4820 2 Cobro/Pago~ 140 Regular
## 8 62 4820 2 Cobro/Pago~ 247 Bueno
## 9 62 4820 2 Cobro/Pago~ 183 Muy Bueno
## 10 62 4820 2 Cobro/Pago~ 91 Muy Bueno
## # ... with 1 more variable: Monto <chr>

Tipos de datos

class(data_banco$Monto)

## [1] "character"
class(data_banco$Sucursal)

## [1] "numeric"
class(data_banco$Cajero)

## [1] "numeric"
class(data_banco$ID_Transaccion)

## [1] "character"
class(data_banco$Transaccion)

## [1] "character"
class(data_banco$Tiempo_Servicio_seg)

## [1] "numeric"
class(data_banco$Satisfaccion)

## [1] "character"

Listar los nombes de las columnas

names(data_banco)

35
## [1] "Sucursal" "Cajero" "ID_Transaccion"
## [4] "Transaccion" "Tiempo_Servicio_seg" "Satisfaccion"
## [7] "Monto"
names(data_sucursal)

## [1] "ID_Sucursal" "Sucursal" "Nuevo_Sistema"

Ver la estructura del data.frame

str(data_banco)

## Classes 'tbl_df', 'tbl' and 'data.frame': 24299 obs. of 7 variables:


## $ Sucursal : num 62 62 62 62 62 62 62 62 62 62 ...
## $ Cajero : num 4820 4820 4820 4820 4820 4820 4820 4820 4820 4820 ...
## $ ID_Transaccion : chr "2" "2" "2" "2" ...
## $ Transaccion : chr "Cobro/Pago (Cta externa)" "Cobro/Pago (Cta externa)" "Cobro/Pago (Cta e
## $ Tiempo_Servicio_seg: num 311 156 248 99 123 172 140 247 183 91 ...
## $ Satisfaccion : chr "Muy Bueno" "Malo" "Regular" "Regular" ...
## $ Monto : chr "2889,3" "1670,69" "3172,49" "1764.92" ...
str(data_sucursal)

## Classes 'tbl_df', 'tbl' and 'data.frame': 5 obs. of 3 variables:


## $ ID_Sucursal : num 62 85 267 443 586
## $ Sucursal : chr "Riocentro Sur" "Centro" "Alborada" "Mall del Sol" ...
## $ Nuevo_Sistema: chr "No" "Si" "Si" "Si" ...

Manipulación de datos

#Cambiar el tipo de dato "Monto"


data_banco$Monto <- sub(",",".",data_banco$Monto, fixed = T)
Monto <- as.numeric(data_banco$Monto)
View(Monto)
class(Monto)

## [1] "numeric"

Cargar librería

library(tidyverse)

## Warning: package 'tidyverse' was built under R version 3.6.2


## -- Attaching packages ----------------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.2.1 v purrr 0.3.3
## v tibble 2.1.3 v dplyr 0.8.3
## v tidyr 1.0.0 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.6.2
## Warning: package 'tibble' was built under R version 3.6.1

36
## Warning: package 'tidyr' was built under R version 3.6.2
## Warning: package 'readr' was built under R version 3.6.1
## Warning: package 'purrr' was built under R version 3.6.2
## Warning: package 'dplyr' was built under R version 3.6.2
## Warning: package 'stringr' was built under R version 3.6.1
## Warning: package 'forcats' was built under R version 3.6.1
## -- Conflicts -------------------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
#Convertir el data banco a un tibble
data_banco <- tbl_df(data_banco)
#Muestra data_banco
data_banco

## # A tibble: 24,299 x 7
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## 6 62 4820 2 Cobro/Pago~ 172 Bueno
## 7 62 4820 2 Cobro/Pago~ 140 Regular
## 8 62 4820 2 Cobro/Pago~ 247 Bueno
## 9 62 4820 2 Cobro/Pago~ 183 Muy Bueno
## 10 62 4820 2 Cobro/Pago~ 91 Muy Bueno
## # ... with 24,289 more rows, and 1 more variable: Monto <chr>

Seleccionar las columnas Transaccion, Tiempo_servicio_seg del data.frame data_banco

#Note que como no se asigno, R evalua la expresion y presenta el resultado

select(data_banco, Transaccion, Tiempo_Servicio_seg)

## # A tibble: 24,299 x 2
## Transaccion Tiempo_Servicio_seg
## <chr> <dbl>
## 1 Cobro/Pago (Cta externa) 311
## 2 Cobro/Pago (Cta externa) 156
## 3 Cobro/Pago (Cta externa) 248
## 4 Cobro/Pago (Cta externa) 99
## 5 Cobro/Pago (Cta externa) 123
## 6 Cobro/Pago (Cta externa) 172
## 7 Cobro/Pago (Cta externa) 140
## 8 Cobro/Pago (Cta externa) 247
## 9 Cobro/Pago (Cta externa) 183
## 10 Cobro/Pago (Cta externa) 91
## # ... with 24,289 more rows

37
Operador Pipe %>%

library(magrittr)

## Warning: package 'magrittr' was built under R version 3.6.1


##
## Attaching package: 'magrittr'
## The following object is masked from 'package:purrr':
##
## set_names
## The following object is masked from 'package:tidyr':
##
## extract
data_banco %>% names

## [1] "Sucursal" "Cajero" "ID_Transaccion"


## [4] "Transaccion" "Tiempo_Servicio_seg" "Satisfaccion"
## [7] "Monto"
data_banco %>% dim

## [1] 24299 7
data_banco %>% names %>% length

## [1] 7
length(names(data_banco))#Equivalencia al código anterior

## [1] 7
data_banco %>% head(n=5)

## # A tibble: 5 x 7
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## # ... with 1 more variable: Monto <chr>

Cargar librería

library(dplyr)
library(magrittr)

#Seleccionar las columans Transaccion, tiempo_Servicio_seg del data.frame

data_banco %>% select(Transaccion, Tiempo_Servicio_seg)

## # A tibble: 24,299 x 2
## Transaccion Tiempo_Servicio_seg

38
## <chr> <dbl>
## 1 Cobro/Pago (Cta externa) 311
## 2 Cobro/Pago (Cta externa) 156
## 3 Cobro/Pago (Cta externa) 248
## 4 Cobro/Pago (Cta externa) 99
## 5 Cobro/Pago (Cta externa) 123
## 6 Cobro/Pago (Cta externa) 172
## 7 Cobro/Pago (Cta externa) 140
## 8 Cobro/Pago (Cta externa) 247
## 9 Cobro/Pago (Cta externa) 183
## 10 Cobro/Pago (Cta externa) 91
## # ... with 24,289 more rows
#Seleccionar la columna Tiempo_Servicio_seg

data_banco %>% select(Tiempo_Servicio_seg) %>% boxplot


1500
1000
500
0

#Selecceiona la columna Tiempo y obtener los fivenumbers de Turkey


data_banco %$% fivenum(Tiempo_Servicio_seg, na.rm = TRUE)

## [1] 18.13177 75.69119 122.45229 197.73046 1602.69832


#
data_banco %>% select(Transaccion, Tiempo_Servicio_seg) %>% View
#Para no tomar en cuenta la variable
data_banco %>% select( -Cajero) %>% View
#
data_banco %>% select( -Cajero,-Transaccion) %>% View

39
#Seleccionar todas las columnas cuyo nombre contenga el texto "Tran"
data_banco %>% select( contains("Tra")) %>% View

#Seleccionar todas las columnas cuyo nombre contenga una "r" o un "sa"
data_banco %>% select( matches("r?sa")) %>% View

Clase 12

Sumar el monto por sucursal

sum(data_banco$Sucursal[]==62)

## [1] 2838
sum(data_banco$Sucursal[]==85)

## [1] 12044
sum(data_banco$Sucursal[]==443)

## [1] 4190
sum(data_banco$Sucursal[]==586)

## [1] 1898
##Clase 13 ### Operadores lógicos
#Igualdad
3==4

## [1] FALSE
#Desigualdad
3 !=4

## [1] TRUE
#Mayo que
3>4

## [1] FALSE
3<=4

## [1] TRUE
#No
! FALSE

## [1] TRUE
#Y
TRUE & FALSE

## [1] FALSE
#O
TRUE | FALSE

## [1] TRUE

40
#ó excluyente
xor(TRUE,TRUE)

## [1] FALSE
#cuidado especial con los NA
TRUE & NA

## [1] NA

Filtrar las filas correspondientes a la sucursal 62

data_banco %>% filter(Sucursal==62) %>% View

Filtrar las filas correspondientes a la sucursal 62 y hayan durado más de 120 segundos

data_banco %>% filter(Sucursal==62 & Tiempo_Servicio_seg>120) %>% View

Filtrar las filas correspndientes a la sucursal 62 hayan más de 120 segundos y la evaluacion a
la satisfaccion sea bueno

data_banco %>% filter(Sucursal==62 & Tiempo_Servicio_seg>120 & Satisfaccion=="Muy Bueno")%>%View

Clase 13

#Ordenar por la satisfaccion


data_banco %>% arrange(Satisfaccion) %>% View
#Ordenar cada transaccion y dentro de cada transaccion de mayor a menor por tiempo de servicio
data_banco %>% arrange(Transaccion, desc(Tiempo_Servicio_seg)) %>% View
#Ordenar de menor a mayor
data_banco %>% arrange(Transaccion, (Tiempo_Servicio_seg)) %>% View
#Transaccion por orden ascendente y tiempo de sevicio de forma desendente
data_banco %>% arrange((Transaccion), Tiempo_Servicio_seg) %>% View
data_banco %>% arrange(Transaccion, desc(Tiempo_Servicio_seg)) %>% View

Case 14

Presente id_sucursal decendente y nuevo sistema ascendente

data_sucursal %>% arrange(Nuevo_Sistema, desc(ID_Sucursal))

## # A tibble: 5 x 3
## ID_Sucursal Sucursal Nuevo_Sistema
## <dbl> <chr> <chr>
## 1 586 Via Daule No
## 2 62 Riocentro Sur No
## 3 443 Mall del Sol Si
## 4 267 Alborada Si

41
## 5 85 Centro Si

Crear o midificar columnas/ variables mutate()

#Crear una nueva columna con el tiempo en minutos

data_banco %>% mutate(Tiempo_Servicio_min=Tiempo_Servicio_seg/60)

## # A tibble: 24,299 x 8
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## 6 62 4820 2 Cobro/Pago~ 172 Bueno
## 7 62 4820 2 Cobro/Pago~ 140 Regular
## 8 62 4820 2 Cobro/Pago~ 247 Bueno
## 9 62 4820 2 Cobro/Pago~ 183 Muy Bueno
## 10 62 4820 2 Cobro/Pago~ 91 Muy Bueno
## # ... with 24,289 more rows, and 2 more variables: Monto <chr>,
## # Tiempo_Servicio_min <dbl>
#Mostrar
data_banco

## # A tibble: 24,299 x 7
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## 6 62 4820 2 Cobro/Pago~ 172 Bueno
## 7 62 4820 2 Cobro/Pago~ 140 Regular
## 8 62 4820 2 Cobro/Pago~ 247 Bueno
## 9 62 4820 2 Cobro/Pago~ 183 Muy Bueno
## 10 62 4820 2 Cobro/Pago~ 91 Muy Bueno
## # ... with 24,289 more rows, and 1 more variable: Monto <chr>
#Crear satisfaccion 2 poner los valores de satisfaccion
data_banco %>% mutate(Satisfaccion2=Satisfaccion)

## # A tibble: 24,299 x 8
## Sucursal Cajero ID_Transaccion Transaccion Tiempo_Servicio~ Satisfaccion
## <dbl> <dbl> <chr> <chr> <dbl> <chr>
## 1 62 4820 2 Cobro/Pago~ 311 Muy Bueno
## 2 62 4820 2 Cobro/Pago~ 156 Malo
## 3 62 4820 2 Cobro/Pago~ 248 Regular
## 4 62 4820 2 Cobro/Pago~ 99 Regular
## 5 62 4820 2 Cobro/Pago~ 123 Muy Bueno
## 6 62 4820 2 Cobro/Pago~ 172 Bueno
## 7 62 4820 2 Cobro/Pago~ 140 Regular

42
## 8 62 4820 2 Cobro/Pago~ 247 Bueno
## 9 62 4820 2 Cobro/Pago~ 183 Muy Bueno
## 10 62 4820 2 Cobro/Pago~ 91 Muy Bueno
## # ... with 24,289 more rows, and 2 more variables: Monto <chr>,
## # Satisfaccion2 <chr>
#Nuevas columnas transmute
data_banco %>% transmute(Tiempo_Servicio_min=Tiempo_Servicio_seg/60)

## # A tibble: 24,299 x 1
## Tiempo_Servicio_min
## <dbl>
## 1 5.18
## 2 2.6
## 3 4.13
## 4 1.65
## 5 2.05
## 6 2.87
## 7 2.33
## 8 4.12
## 9 3.05
## 10 1.52
## # ... with 24,289 more rows
Tiempo_Servicio_min <-as.data.frame( data_banco %>% transmute(Tiempo_Servicio_min=Tiempo_Servicio_seg/60
data_banco <- cbind(data_banco,Tiempo_Servicio_min)
#Ver data banco
View(data_banco)

Clase 15

Estadística descriptiva

#Media
#mean(x,na.rm = TRUE) #Elimine los valores nulos TRUE

#Mediana
#median(x,na.rm = TRUE)#Elimine los valores nulos TRUE

#Media Ponderada
#Consula funcion
#weighted.mean()# y parametros

#Moda
library("modeest")

## Warning: package 'modeest' was built under R version 3.6.2


## Registered S3 method overwritten by 'rmutil':
## method from
## print.response httr
#mlv(x)

43
Media

data_banco%$%mean(Tiempo_Servicio_seg,na.rm = TRUE)#Media del tiempo de servicio en segundos

## [1] 155.58
data_banco%$%mean(Tiempo_Servicio_seg,na.rm = FALSE) # no elimina valores nulos

## [1] 155.58
data_banco%$%mean(Tiempo_Servicio_min,na.rm = TRUE)#Media del tiempo de servisio en segundos

## [1] 2.593
##Media acotada al 10%
data_banco%$% mean(Tiempo_Servicio_seg,trim = 0.05,na.rm = TRUE)#Segundo

## [1] 141.9233
data_banco%$% mean(Tiempo_Servicio_min,trim = 0.05,na.rm = TRUE)#Minutos

## [1] 2.365388
#Mediana
data_banco%$%median(Tiempo_Servicio_seg,na.rm = TRUE)#Mediana del tiempo de servicio en segundos sin val

## [1] 122.4523
##Media Huber
data_banco%$%MASS::huber(Tiempo_Servicio_seg)%>%as.data.frame()%>% select(mu)

## mu
## 1 138.0164

Moda

mlv(data_banco$Tiempo_Servicio_seg)#Media del tiempo en segundos

## Warning: argument 'method' is missing. Data are supposed to be continuous.


## Default method 'shorth' is used
## [1] 84.13594

Medidas de posición

#min(x,na.rm = TRUE)
#max(x,na.rm = TRUE)##Minino y maximo eliminando N/A

##quantil
#cuartiles
#quantile(X,probs = c(0.25,0.50,0.75))

#deciles:
#quantile(x,probs = seq(0.1,1,by=0.1))

44
#centil:
#quantile(x,probs)

Ejercicio

min(data_banco$Tiempo_Servicio_seg,na.rm = T)#valor minimo de los segundos

## [1] 18.13177
min(data_banco$Tiempo_Servicio_min,na.rm = T)#valor minimo en minutos

## [1] 0.3021962
#Cuartriles:
quantile(data_banco$Tiempo_Servicio_seg,probs = c(0.25,0.50,0.75))

## 25% 50% 75%


## 75.69119 122.45229 197.73046
quantile(data_banco$Tiempo_Servicio_min,probs = c(0.25,0.50,0.75))

## 25% 50% 75%


## 1.261520 2.040872 3.295508

Clase 16

Funciones de Maximo y Minimo

#Minimo de tiempo en segundos


min(data_banco$Tiempo_Servicio_seg,na.rm=T)

## [1] 18.13177
#Maximo de tiempo en segundos
max(data_banco$Tiempo_Servicio_seg,na.rm=T)

## [1] 1602.698
#Minimo de tiempo en minutos
min(Tiempo_Servicio_min,na.rm=T)

## [1] 0.3021962
#Maximo de tiempo en minutos
max(Tiempo_Servicio_min,na.rm=T)

## [1] 26.71164

Cuartiles, deciles, centiles

#Tiempo en segundos
#Cuartil
quantile(data_banco$Tiempo_Servicio_seg,probs=c(0.25,0.5,0.75))

45
## 25% 50% 75%
## 75.69119 122.45229 197.73046
#Deciles
quantile(data_banco$Tiempo_Servicio_seg,probs=seq(from=0.1, to=1, by=0.1))

## 10% 20% 30% 40% 50% 60% 70%


## 49.6230 67.0000 84.0000 102.0000 122.4523 146.9901 178.8348
## 80% 90% 100%
## 220.2469 298.7826 1602.6983
#Centiles
quantile(data_banco$Tiempo_Servicio_seg)

## 0% 25% 50% 75% 100%


## 18.13177 75.69119 122.45229 197.73046 1602.69832
#Tiempo en minutos
#Cuartil
quantile(data_banco$Tiempo_Servicio_min,probs=c(0.25,0.5,0.75))

## 25% 50% 75%


## 1.261520 2.040872 3.295508
#Deciles
quantile(data_banco$Tiempo_Servicio_min,probs=seq(from=0.1, to=1, by=0.1))

## 10% 20% 30% 40% 50% 60%


## 0.8270499 1.1166667 1.4000000 1.7000000 2.0408715 2.4498355
## 70% 80% 90% 100%
## 2.9805806 3.6707823 4.9797095 26.7116386
#Centiles
quantile(data_banco$Tiempo_Servicio_min)

## 0% 25% 50% 75% 100%


## 0.3021962 1.2615198 2.0408715 3.2955076 26.7116386

Clase 17

Cargar la librería

Obtener la media del tiempo de servicio en segundos

data_banco %>%
summarise( MEDIA= mean(Tiempo_Servicio_seg, na.rm=TRUE),
MEDIA_ACOT= mean(Tiempo_Servicio_seg, na.rm=TRUE, trim = 0.05),
CANTIDAD = n()
)

## MEDIA MEDIA_ACOT CANTIDAD


## 1 155.58 141.9233 24299

46
Obtener medididas de tendencia central para el tiempo cada tipo de transaccion

data_banco %>%
group_by(Transaccion) %>%
summarise_at(vars(Tiempo_Servicio_seg),
funs(
MEDIA= mean(.,na.rm = TRUE),
MEDIA_ACOT=mean(.,na.rm = TRUE,trim = 0.05),
CANTIDAD= n()
)
)

## Warning: funs() is soft deprecated as of dplyr 0.8.0


## Please use a list of either functions or lambdas:
##
## # Simple named list:
## list(mean = mean, median = median)
##
## # Auto named with `tibble::lst()`:
## tibble::lst(mean, median)
##
## # Using lambdas
## list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
## This warning is displayed once per session.
## # A tibble: 3 x 4
## Transaccion MEDIA MEDIA_ACOT CANTIDAD
## <chr> <dbl> <dbl> <int>
## 1 Cobrar cheque (Cta del Bco) 186. 175. 5407
## 2 Cobro/Pago (Cta externa) 301. 285. 3005
## 3 Deposito 118. 112. 15887

Obtener medidas de tendencia central para el tiempo de servicio para cada Transaccion y Nivel
de satisfacción

data_banco %>%
group_by(Transaccion, Satisfaccion) %>%
summarise_at(vars(Tiempo_Servicio_seg),
funs(
MEDIA= mean(.,na.rm = TRUE),
MEDIA_ACOT=mean(.,na.rm = TRUE,trim = 0.05),
CANTIDAD= n()
)
)

## # A tibble: 15 x 5
## # Groups: Transaccion [3]
## Transaccion Satisfaccion MEDIA MEDIA_ACOT CANTIDAD
## <chr> <chr> <dbl> <dbl> <int>
## 1 Cobrar cheque (Cta del Bco) Bueno 185. 174. 1423
## 2 Cobrar cheque (Cta del Bco) Malo 183. 174. 840
## 3 Cobrar cheque (Cta del Bco) Muy Bueno 187. 176. 1593
## 4 Cobrar cheque (Cta del Bco) Muy Malo 186. 175. 505

47
## 5 Cobrar cheque (Cta del Bco) Regular 188. 177. 1046
## 6 Cobro/Pago (Cta externa) Bueno 309. 292. 851
## 7 Cobro/Pago (Cta externa) Malo 290. 271. 403
## 8 Cobro/Pago (Cta externa) Muy Bueno 304. 287. 957
## 9 Cobro/Pago (Cta externa) Muy Malo 272. 260. 238
## 10 Cobro/Pago (Cta externa) Regular 307. 293. 556
## 11 Deposito Bueno 118. 112. 3641
## 12 Deposito Malo 116. 110. 3231
## 13 Deposito Muy Bueno 119. 114. 3712
## 14 Deposito Muy Malo 113. 108. 2266
## 15 Deposito Regular 120. 113. 3037

Clase 18

Crear resumenes para datos agrupados y filtrados

#Obtener medidas de tendencia central para el tiempo de servicio para cada sucursal

data_banco %>%
filter(Sucursal==62)%>%
group_by(Transaccion, Satisfaccion) %>%
summarise_at(vars(Tiempo_Servicio_seg),
funs(
MEDIA= mean(.,na.rm = T),
MEDIA_ACOT= mean(., na.rm= T, trim = 0.05),
CANTIDAD= n()
)
)

## # A tibble: 15 x 5
## # Groups: Transaccion [3]
## Transaccion Satisfaccion MEDIA MEDIA_ACOT CANTIDAD
## <chr> <chr> <dbl> <dbl> <int>
## 1 Cobrar cheque (Cta del Bco) Bueno 108. 105. 191
## 2 Cobrar cheque (Cta del Bco) Malo 117. 114. 122
## 3 Cobrar cheque (Cta del Bco) Muy Bueno 102. 98.4 171
## 4 Cobrar cheque (Cta del Bco) Muy Malo 102. 99.0 85
## 5 Cobrar cheque (Cta del Bco) Regular 104. 101. 119
## 6 Cobro/Pago (Cta externa) Bueno 165. 159. 103
## 7 Cobro/Pago (Cta externa) Malo 152. 146. 80
## 8 Cobro/Pago (Cta externa) Muy Bueno 167. 163. 93
## 9 Cobro/Pago (Cta externa) Muy Malo 161. 158. 54
## 10 Cobro/Pago (Cta externa) Regular 171. 165. 74
## 11 Deposito Bueno 65.8 64.3 390
## 12 Deposito Malo 64.1 62.2 402
## 13 Deposito Muy Bueno 67.1 65.4 335
## 14 Deposito Muy Malo 67.2 65.4 292
## 15 Deposito Regular 63.7 62.3 327
#Sucursal 62 y satisfacción muy bueno
data_banco %>%
filter(Sucursal==62)%>% filter(Satisfaccion=="Muy Bueno")%>%
group_by(Transaccion, Satisfaccion) %>%

48
summarise_at(vars(Tiempo_Servicio_seg),
funs(
MEDIA= mean(.,na.rm = T),
MEDIA_ACOT= mean(., na.rm= T, trim = 0.05),
CANTIDAD= n()
)
)

## # A tibble: 3 x 5
## # Groups: Transaccion [3]
## Transaccion Satisfaccion MEDIA MEDIA_ACOT CANTIDAD
## <chr> <chr> <dbl> <dbl> <int>
## 1 Cobrar cheque (Cta del Bco) Muy Bueno 102. 98.4 171
## 2 Cobro/Pago (Cta externa) Muy Bueno 167. 163. 93
## 3 Deposito Muy Bueno 67.1 65.4 335

Clase 19

###Tabla de frecuencia- V. Númerica


#Calcular tabla de frecuencias

library('fdth')

##
## Attaching package: 'fdth'
## The following object is masked from 'package:modeest':
##
## mfv
## The following objects are masked from 'package:stats':
##
## sd, var
#tabl_frec <- fdt(data_banco$Tiempo_Servicio_seg , breaks="Sturges") ## Base R

tabl_frec <- data_banco %$% fdt(Tiempo_Servicio_seg, breaks="Sturges")


tabl_frec

## Class limits f rf rf(%) cf cf(%)


## [17.9505,117.999) 11642 0.48 47.91 11642 47.91
## [117.999,218.047) 7697 0.32 31.68 19339 79.59
## [218.047,318.096) 2910 0.12 11.98 22249 91.56
## [318.096,418.144) 1119 0.05 4.61 23368 96.17
## [418.144,518.193) 454 0.02 1.87 23822 98.04
## [518.193,618.241) 241 0.01 0.99 24063 99.03
## [618.241,718.289) 114 0.00 0.47 24177 99.50
## [718.289,818.338) 63 0.00 0.26 24240 99.76
## [818.338,918.386) 34 0.00 0.14 24274 99.90
## [918.386,1018.43) 10 0.00 0.04 24284 99.94
## [1018.43,1118.48) 7 0.00 0.03 24291 99.97
## [1118.48,1218.53) 4 0.00 0.02 24295 99.98
## [1218.53,1318.58) 2 0.00 0.01 24297 99.99
## [1318.58,1418.63) 1 0.00 0.00 24298 100.00

49
## [1418.63,1518.68) 0 0.00 0.00 24298 100.00
## [1518.68,1618.73) 1 0.00 0.00 24299 100.00
#Histograma

hist(data_banco$Tiempo_Servicio_seg, breaks="Sturges", main = "Histograma para la variable Tiempo de res

Histograma para la variable Tiempo de respuesta


2000 4000 6000 8000
Frequency

0 500 1000 1500

data_banco$Tiempo_Servicio_seg

#Definiendo nosotros mismos los rangos

50

También podría gustarte