################ laboratorio 2 ############################1## Curso: Laboratorio de R y Python ###########################2## @author: Roberto Mendoza34library(dplyr) # librería de limpieza de datos5library(tidyr)# librería de limpieza de datos6library(readxl) # lobreria para subir archivos excel, csv7library(sandwich)8## Loop replacement910user <- Sys.getenv("USERNAME") # username1112setwd( paste0("C:/Users/",user,"/Documents/GitHub/1ECO35_2022_2/Lab3") ) # set directorio131415##################################################################################1617"Lapply and Sapply"1819vector = seq(100)2021lapply(vector, function(square) {square^2}) # resultado en formato lista22sapply(vector, function(square) {square^2}) # vector canonico simple23242526"Función 1"2728lapply(vector, function(x){29out = x*(1/3) - 0.5*x30return(out)31} ) # resultado en formato lista323334sapply(vector, function(x){35out = x*(1/3) - 0.5*x36return(out)37} ) # resultado en formato vector383940"Función 2, de estandarización"414243lapply(vector, function(i, mean, sd){44( i - mean ) / sd45} , mean = mean(vector), sd = sd(vector))464748# Asignando el nombre de la función: standarize4950standarize <- function(i, mean, sd){51( i - mean ) / sd52}535455lapply(vector,standarize, mean = mean(vector), sd = sd(vector))56sapply(vector,standarize, mean = mean(vector), sd = sd(vector))5758# lapply(x, FUN, ...) ... : argumentos adicionales para la función59606162"Función 3"6364lapply(vector, function(i){65if (i < 50){6667out = 16869} else {7071out = NA727374}75return(out)7677})7879sapply(vector, function(i){80if (i < 50){8182out = 18384} else {8586out = NA878889}90return(out)9192})9394959697" Loop replacement in Matrix "9899set.seed(756)100101x1 <- runif(500) # distribución uniforme entre 0 y 1102x2 <- runif(500)103x3 <- runif(500)104x4 <- runif(500)105106X <- cbind(matrix(1,500), x1,x2,x3,x4)107108# matrix(1,500) vector columna de unos (500 observaciones)109110apply(X, 2, mean) # MARGIN == 2 para columnas (columns)111apply(X, 1, mean) # MARGIN == 1 para filas (rows)112113114apply(X, 1, sd) # MARGIN == 1 para filas115116apply(X, 2, min)117118apply(X, 1, max)119120121"Estandarizar una matriz "122123apply(X, 2, function(i){124( i - mean(i) ) / sd(i)125} )126127# 2 se aplica la función a los elementos de cada columna128129130cps2012 <- get(load("../data/cps2012.Rdata")) # load R dataset format, extensión Rdata131132# Tomamos la varianza de cada columna133134apply(cps2012, 2, var) # tomando la varianza por columna (Margin:2)135136X <- cps2012[ , which(apply(cps2012, 2, var) != 0)] # Se exlucye las columnas constantes137138demean<- function (x){ x- mean(x)}139X<- apply(X, 2, demean)140141142# Conocer los elementos de una función creada o libreria143args(demean)144args(sandwich)145146147#------------------------------------------------------------148# Equivalent *args de Python en R (...)149150151152caso1 <- function(...) return(sum(...))153154caso1(2,4,5)155156157158caso2 <- function(...) {159160return(prod(...))161162163}164165caso2(sample(1:50, size = 5))166167str(sandwich)168args(lapply)169170171# Una aplicación usando la base de datos cps2012172173transform <- function(Data, ...){174175Data_select = Data[,c(...)]176177}178179data <- transform(cps2012, "lnw", "exp1","exp2","exp3","exp4")180181View(data)182183184185186187188189190191192193194195196197