Fundamentos de Programación en R
Fundamentos de Programación en R
Alan Ulcuango
10/2/2020
Aprendizaje autónomo
x<-2
x
## [1] 2
class(x)
## [1] "numeric"
mode(x)
## [1] "numeric"
x<-c(18,11,12,10,7,6,17)
x[c(1,2)]
## [1] 18 11
x[x>10]
## [1] 18 11 12 17
x[x<10]
## [1] 7 6
x[x=10]
## [1] NA
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
A<- 6
B<-7
C<-8
x<-c(A,B,C)
x
## [1] 6 7 8
## [1] 10 20 30 40
x<- c(seq(from=10,by=10 , length.out=40))
x
## [1] 40
x<-rbind(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
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
rep(x=3, time=5)
## [1] 3 3 3 3 3
rep(3,5)
## [1] 3 3 3 3 3
## [1] 2 4 4 4 4 1 1 2 3 3
ls()
4
Creación de una matriz
m <- 11:30
dim(m) <- c(4,5)
m
## [1] "matrix"
m[20]
## [1] 30
m[11]
## [1] 21
5
## [3,] 0 0 0 0 0
## [4,] 0 0 0 0 0
m <- matrix(nrow=4,ncol=5)
m
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
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
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"
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
## [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
j<-c("A","B","C")
j
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"
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"
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
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] 4 6 8 10 12 14 16 18
Contar elementos
length(by)
frutas<-c(15,100,2,30)
names(frutas)<-c("naranja","pera","manzana","durazno")
frutas<-c(naranja=15,pera=100,manzana=2,durazno=30)
frutas
## pera
## 100
#cambiar valor de un vector
frutas["pera"]<- 1000
frutas
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
## [1] 0 5 10 15 20
12
Generar aleatorios uniformes tomar parte entera
2.0
1.5
1.0
2 4 6 8 10
Index
#graficar barras
barplot(x)
13
4
3
2
1
0
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
15
## [4,] 14 18 22 26 30
#Matriz de 5x4
dim(b)<-c(5,4)
b
## [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
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
Incremento de 2 en 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
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
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
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
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
rownames(df_3)<-paste('id_',1:3)
df_3
obs=sep da espacio en el id
rownames(df_3)<-paste('id_',1:3,sep = '')
df_3
Cambio de encabezado
names(df_3)<-c('Name','Age','City')
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
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
## [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()
Clase 6
n<-10
n
## [1] 10
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] 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
}
#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)
## [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
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
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()
Clase 11
library(readxl)
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"
names(data_banco)
35
## [1] "Sucursal" "Cajero" "ID_Transaccion"
## [4] "Transaccion" "Tiempo_Servicio_seg" "Satisfaccion"
## [7] "Monto"
names(data_sucursal)
str(data_banco)
Manipulación de datos
## [1] "numeric"
Cargar librería
library(tidyverse)
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>
## # 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)
## [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)
## # 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
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
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 y hayan durado más de 120 segundos
Filtrar las filas correspndientes a la sucursal 62 hayan más de 120 segundos y la evaluacion a
la satisfaccion sea bueno
Clase 13
Case 14
## # 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
## # 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")
43
Media
## [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
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
## [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))
Clase 16
## [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
#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))
Clase 17
Cargar la librería
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()
)
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()
)
)
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
#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
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
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
data_banco$Tiempo_Servicio_seg
50