Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
robertopucp
GitHub Repository: robertopucp/1eco35_2022_2
Path: blob/main/Lab4/Lab4_R.R
2710 views
1
################ laboratorio 2 ############################
2
## Curso: Laboratorio de R y Python ###########################
3
## @author: Roberto Mendoza
4
5
library(dplyr) # librería de limpieza de datos
6
library(tidyr)# librería de limpieza de datos
7
library(readxl) # lobreria para subir archivos excel, csv
8
library(sandwich)
9
## Loop replacement
10
11
user <- Sys.getenv("USERNAME") # username
12
13
setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Lab3") ) # set directorio
14
15
16
##################################################################################
17
18
"Lapply and Sapply"
19
20
vector = seq(100)
21
22
lapply(vector, function(square) {square^2}) # resultado en formato lista
23
sapply(vector, function(square) {square^2}) # vector canonico simple
24
25
26
27
"Función 1"
28
29
lapply(vector, function(x){
30
out = x*(1/3) - 0.5*x
31
return(out)
32
} ) # resultado en formato lista
33
34
35
sapply(vector, function(x){
36
out = x*(1/3) - 0.5*x
37
return(out)
38
} ) # resultado en formato vector
39
40
41
"Función 2, de estandarización"
42
43
44
lapply(vector, function(i, mean, sd){
45
( i - mean ) / sd
46
} , mean = mean(vector), sd = sd(vector))
47
48
49
# Asignando el nombre de la función: standarize
50
51
standarize <- function(i, mean, sd){
52
( i - mean ) / sd
53
}
54
55
56
lapply(vector,standarize, mean = mean(vector), sd = sd(vector))
57
sapply(vector,standarize, mean = mean(vector), sd = sd(vector))
58
59
# lapply(x, FUN, ...) ... : argumentos adicionales para la función
60
61
62
63
"Función 3"
64
65
lapply(vector, function(i){
66
if (i < 50){
67
68
out = 1
69
70
} else {
71
72
out = NA
73
74
75
}
76
return(out)
77
78
})
79
80
sapply(vector, function(i){
81
if (i < 50){
82
83
out = 1
84
85
} else {
86
87
out = NA
88
89
90
}
91
return(out)
92
93
})
94
95
96
97
98
" Loop replacement in Matrix "
99
100
set.seed(756)
101
102
x1 <- runif(500) # distribución uniforme entre 0 y 1
103
x2 <- runif(500)
104
x3 <- runif(500)
105
x4 <- runif(500)
106
107
X <- cbind(matrix(1,500), x1,x2,x3,x4)
108
109
# matrix(1,500) vector columna de unos (500 observaciones)
110
111
apply(X, 2, mean) # MARGIN == 2 para columnas (columns)
112
apply(X, 1, mean) # MARGIN == 1 para filas (rows)
113
114
115
apply(X, 1, sd) # MARGIN == 1 para filas
116
117
apply(X, 2, min)
118
119
apply(X, 1, max)
120
121
122
"Estandarizar una matriz "
123
124
apply(X, 2, function(i){
125
( i - mean(i) ) / sd(i)
126
} )
127
128
# 2 se aplica la función a los elementos de cada columna
129
130
131
cps2012 <- get(load("../data/cps2012.Rdata")) # load R dataset format, extensión Rdata
132
133
# Tomamos la varianza de cada columna
134
135
apply(cps2012, 2, var) # tomando la varianza por columna (Margin:2)
136
137
X <- cps2012[ , which(apply(cps2012, 2, var) != 0)] # Se exlucye las columnas constantes
138
139
demean<- function (x){ x- mean(x)}
140
X<- apply(X, 2, demean)
141
142
143
# Conocer los elementos de una función creada o libreria
144
args(demean)
145
args(sandwich)
146
147
148
#------------------------------------------------------------
149
# Equivalent *args de Python en R (...)
150
151
152
153
caso1 <- function(...) return(sum(...))
154
155
caso1(2,4,5)
156
157
158
159
caso2 <- function(...) {
160
161
return(prod(...))
162
163
164
}
165
166
caso2(sample(1:50, size = 5))
167
168
str(sandwich)
169
args(lapply)
170
171
172
# Una aplicación usando la base de datos cps2012
173
174
transform <- function(Data, ...){
175
176
Data_select = Data[,c(...)]
177
178
}
179
180
data <- transform(cps2012, "lnw", "exp1","exp2","exp3","exp4")
181
182
View(data)
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197