##################################### # SCRIPT DE ANALISIS DE DATOS # # Autor: Juan Antonio Breña Moral # # Email: bren@juanantonio.info # ##################################### # # CARGAR LIBRERIAS # CARGA_LIBRERIAS <- function(){ cat("\nCarga de librerías\n") library("xtable")#Prediccion } # # OTRAS FUNCIONES # JAB.TOOLS.MERGE <- function(VECTOR1,VECTOR2){ TOTAL = length(VECTOR1) + length(VECTOR2) ARRAY_FINAL <- VECTOR1 j = 1 for (i in (length(VECTOR1)+1):TOTAL){ ARRAY_FINAL[i] <- as.numeric(VECTOR2[[j]]) j = j + 1 } return(ARRAY_FINAL) } JAB.PREDICCION.INTEGRAR_DATOS <- function(DATOS,DATOS_PREDICCION){ DATOS_INTEGRADOS <- c() for(i in 1:length(DATOS)){ DATOS_INTEGRADOS <- JAB.TOOLS.MERGE(DATOS[i],DATOS_PREDICCION[i]) print(DATOS_INTEGRADOS) } return(DATOS_INTEGRADOS) } # # FUNCIONES DE CONTROL # #Funcion que dadas unas ventas, devuelve un vector con las ventas acumuladas de las ventas. JAB.CONTROL.GET_VENTAS_ACUMULADAS <- function(DATOS){ VENTAS_ACUMULADAS <- c() for (i in 1:length(DATOS)){ VENTAS_ACUMULADAS[i] <-sum(DATOS[i]) } return(VENTAS_ACUMULADAS) } JAB.CONTROL.GET_OBJETIVOS_MENSUALES <- function(OBJETIVOS){ OBJETIVOS_MENSUALES <- c() for (i in 1:length(OBJETIVOS)){ OBJETIVOS_MENSUALES[i] <- OBJETIVOS[i]/12 } return(OBJETIVOS_MENSUALES) } JAB.CONTROL.GET_PORCENTAJES <- function(VA,OBJETIVOS_MENSUALES, MESES){ SUMATORIO_OBJETIVOS_ACTUAL <- c() for (i in 1:length(OBJETIVOS)){ SUMATORIO_OBJETIVOS_ACTUAL[i] <- OBJETIVOS_MENSUALES[i]*MESES } PORCENTAJES_ACTUALES <- c() for (i in 1:length(OBJETIVOS)){ POR <- (VA[[i]]*100)/SUMATORIO_OBJETIVOS_ACTUAL[[i]] PORCENTAJES_ACTUALES[i] <- POR } return(PORCENTAJES_ACTUALES) } JAB.CONTROL.VENTAS_ACTUAL <- function(DATOS,OBJETIVOS,DELEGACIONES){ #Se extraen los datos del primer mes, para saber los meses dados. SAMPLE <- DATOS[[1]] MESES <- length(SAMPLE) OBJ <- OBJETIVOS OBJETIVOS_MENSUALES <- JAB.CONTROL.GET_OBJETIVOS_MENSUALES(OBJETIVOS) VA <- JAB.CONTROL.GET_VENTAS_ACUMULADAS(DATOS) POR <- JAB.CONTROL.GET_PORCENTAJES(VA,OBJETIVOS_MENSUALES,MESES) print(DELEGACIONES) print(OBJ) print(OBJETIVOS_MENSUALES) print(VA) print(POR) } #JAB.CONTROL.VENTAS_ACTUAL(VENTAS_REAL,OBJETIVOS,DELEGACIONES) JAB.CONTROL.VENTAS <- function(VENTAS_REAL,OBJETIVOS,DELEGACIONES){ CARGA_LIBRERIAS() JAB.CONTROL.VENTAS_ACTUAL(VENTAS_REAL,OBJETIVOS,DELEGACIONES) } # Funcion que genera un vector con valores acumulados a partir de un vector de datos original JAB.CONTROL.GET_ACUMULADO <- function(DATOS){ DATOS_ACUMULADOS <- c() DATOS_ACUMULADOS[1] <- DATOS[1] for(i in 2:length(DATOS)){ j <- i-1 DATOS_ACUMULADOS[i] <- DATOS_ACUMULADOS[j] + DATOS[i] } return(DATOS_ACUMULADOS) } # Funcion que genera un grafico comparativo entre los datos de ventas y los planificados. JAB.CONTROL.GRAFICO_ACUMULADO <- function(DATOS_PLANIFICADOS, DATOS_REALES){ plot(DATOS_PLANIFICADOS, type="b", xlab="MESES", ylab="VENTAS") lines(DATOS_REALES, type = "b", col = "red") #legend("topright", legend = c(" ", " "),lty = 1:2, xjust = 1, yjust = 1, title = "PLANIFICADO VS REAL") } # Funcion que genera un grafico donde se puede ver la tendencia. JAB.CONTROL.GRAFICO_TENDENCIA <- function(DATOS_REALES){ plot(DATOS_REALES, type="b", xlab="MESES", ylab="VENTAS") } JAB.CONTROL.REPORT <- function(DATOS,OBJETIVO_ANUAL){ cat("Objetivo anual de ventas: ", OBJETIVO_ANUAL, "€\n") SUMA_VENTAS <- sum(DATOS) cat("Ventas acumuladas: ", SUMA_VENTAS, "€\n") MESES_FALTANTES <- 12- length(DATOS) DESVIACION_VENTAS <- OBJETIVO_ANUAL - SUMA_VENTAS MESES_ACTUALES <- length(DATOS) OBJETIVO_MENSUAL <- OBJETIVO_ANUAL/12 VECTOR_OBJETIVOS_MENSUALES <- rep(OBJETIVO_MENSUAL,MESES_ACTUALES) VENTAS_PLANIFICADAS <- sum(VECTOR_OBJETIVOS_MENSUALES) if(SUMA_VENTAS >= VENTAS_PLANIFICADAS){ PORCENTAJE <- ((SUMA_VENTAS*100)/VENTAS_PLANIFICADAS)-100 cat("Actualmente, se estan cumpliendo la planificación en: ",PORCENTAJE, "%\n") }else{ PORCENTAJE <- 100 -((SUMA_VENTAS*100)/VENTAS_PLANIFICADAS) cat("Actualmente, existe una desviación con respecto a la planificación de: ",PORCENTAJE,"%\n") } if(SUMA_VENTAS >= OBJETIVO_ANUAL){ cat("Has superado los objetivos anuales a falta de ",MESES_FALTANTES, " meses.\n") }else{ cat("Faltan por vender ", DESVIACION_VENTAS, "€ en ",MESES_FALTANTES, " meses.\n") } } # Funcion que analiza una delegacion. JAB.CONTROL.REGION <- function(DATOS,OBJETIVO_ANUAL){ MESES_ACTUALES <- length(DATOS) OBJETIVO_MENSUAL <- OBJETIVO_ANUAL/12 VECTOR_OBJETIVOS_MENSUALES <- rep(OBJETIVO_MENSUAL,MESES_ACTUALES) VECTOR_OBJETIVO_ACUMULADO <- JAB.CONTROL.GET_ACUMULADO(VECTOR_OBJETIVOS_MENSUALES) VECTOR_DATOS_ACUMULADO <- JAB.CONTROL.GET_ACUMULADO(DATOS) par(mfrow = c(1,2)) JAB.CONTROL.GRAFICO_ACUMULADO(VECTOR_OBJETIVO_ACUMULADO,VECTOR_DATOS_ACUMULADO) JAB.CONTROL.GRAFICO_TENDENCIA(DATOS) par(mfrow = c(1,1)) JAB.CONTROL.REPORT(DATOS,OBJETIVO_ANUAL) } # # CODIGOS DE EJECUCICION # # 1. Carga de datos de ventas. VENTAS <- read.table("C:/Documents and Settings/JBRENA/Escritorio/VENTAS.csv",header=T,sep=";", quote="") # 2. Preparacion de datos. attach(VENTAS) DELEGACIONES <- c("ESTE","CLL","SUR","NORTE","CLMS","NUCLEAR") VENTAS_REAL <- data.frame(ESTE_R,CLL_R,SUR_R,NORTE_R,CLMS_R,NUCLEAR_R) detach(VENTAS) names(VENTAS_REAL) = DELEGACIONES OBJETIVOS <- c(99999999,99999999,99999999,99999999,99999999,99999999) #names(OBJETIVOS) = DELEGACIONES VENTAS_JULIO <- c(99999999) CLL_NEW <- JAB.TOOLS.MERGE(CLL,VENTAS_JULIO) #print(CLL_NEW) #JAB.CONTROL.REGION(CLL_NEW,99999999) JAB.CONTROL.VENTAS(VENTAS_REAL,OBJETIVOS,DELEGACIONES)