Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- pkg <- c("shiny", "plyr", "dplyr", "data.table", "dplyr")
- new.pkg <- pkg[!(pkg %in% installed.packages())]
- if (length(new.pkg)) {
- install.packages(new.pkg)
- }
- library(shiny)
- library(plyr)
- library(dplyr)
- ui <- fluidPage(
- titlePanel("Profitability Calculator"),
- sidebarLayout(position = "left",
- sidebarPanel(
- tags$head(tags$style("#addnew{color: black;
- font-size: 16px;
- font-style: italic;
- }"
- )
- ),
- selectInput("placement", "Placement:",
- c("Display" = "d",
- "Video" = "v",
- "CPM" = "c")),
- tags$hr(),
- numericInput(inputId = "budget",
- label = "Enter the client budget for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "profit",
- label = "Enter the profit targeted for this campaign",value=0),
- tags$hr(),
- numericInput(inputId = "clearbase",
- label = "Enter the clear base for this campaign",value=0),
- # tags$hr(),
- # selectInput("clearbase", "Enter the clearing base range",
- # list("0-1","1-2","2-3","3-4","4-5","5-6")),
- tags$hr(),
- numericInput(inputId = "newcpm",
- label = "Enter the new CPM for this campaign",value=0),
- tags$hr(),
- numericInput(inputId = "dynamic1",
- label = "Enter dynamic av1 for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "dynamic2",
- label = "Enter dynamic av2 for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "dynamic3",
- label = "Enter dynamic av3 for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "static",
- label = "Enter static av for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "incremental1",
- label = "Enter incremental av1 for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "incremental2",
- label = "Enter incremental av2 for the campaign", min = 1,value = 0),
- tags$hr(),
- numericInput(inputId = "incremental3",
- label = "Enter incremental av3 for the campaign", min = 1,value = 0),
- tags$hr(),
- actionButton("goButton", "Check")
- ),
- mainPanel(
- h4('Results'),
- tags$hr(),
- column(8, tableOutput("table1"))
- )
- ))
- server <- function(input, output) {
- budget <- eventReactive(input$goButton, {((100 - input$profit) * input$budget) / 100})
- int_imp <- eventReactive(input$goButton, {x<-(as.numeric(budget())/as.numeric(input$clearbase)) * 1000
- format(x,scientific=F)})
- clr_cpm <- eventReactive(input$goButton,{z <- (if (input$newcpm != 0){
- clr_cpm <- as.numeric(input$newcpm)
- format(clr_cpm,digits = 3)
- }else if (input$newcpm == 0){
- clr_cpm <- (input$budget/as.numeric(int_imp())) * 1000
- format(clr_cpm,digits = 3)}
- )})
- new_imp <- eventReactive(input$goButton, {x<-((as.numeric(input$budget)/as.numeric(input$newcpm)) * 1000)
- format(x, scientific=F)})
- new_budget <- eventReactive(input$goButton, {y<-((as.numeric(new_imp()) * as.numeric(input$clearbase)) / 1000)
- })
- new_profit <- eventReactive(input$goButton, {z1 <- ((input$budget - (as.numeric(new_budget())))/input$budget) * 100
- format(z1,digits = 4)})
- ext_imp <- eventReactive(input$goButton, {y<- (input$budget/as.numeric(clr_cpm())) * 1000
- format(y, scientific=F)})
- dym_cost_1 <- eventReactive(input$goButton, {if (input$newcpm == 0){
- y <- ((as.numeric(int_imp())*(input$dynamic1/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
- y <- ((as.numeric(new_imp())*(input$dynamic1/100)) * as.numeric(input$clearbase))/1000}
- })
- dym_cost_2 <- eventReactive(input$goButton, {if (input$newcpm == 0){
- y <- ((as.numeric(int_imp())*(input$dynamic2/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
- y <- ((as.numeric(new_imp())*(input$dynamic2/100)) * as.numeric(input$clearbase))/1000}
- })
- dym_cost_3 <- eventReactive(input$goButton, {if (input$newcpm == 0){
- y <- ((as.numeric(int_imp())*(input$dynamic3/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
- y <- ((as.numeric(new_imp())*(input$dynamic3/100)) * as.numeric(input$clearbase))/1000}
- })
- dym_cost_total <-reactive({as.numeric(dym_cost_1())+as.numeric(dym_cost_2())+as.numeric(dym_cost_3())})
- int_cost_1 <- eventReactive(input$goButton,{if (input$newcpm == 0){
- y <- (as.numeric(int_imp())*(input$incremental1/100))/1000}else if(input$newcpm != 0){
- y <- (as.numeric(new_imp())*(input$incremental3/100))/1000}
- })
- int_cost_2 <- eventReactive(input$goButton,{if (input$newcpm == 0){
- y <- (as.numeric(int_imp())*(input$incremental2/100))/1000}else if(input$newcpm != 0){
- y <- (as.numeric(new_imp())*(input$incremental2/100))/1000}
- })
- int_cost_3 <- eventReactive(input$goButton,{if (input$newcpm == 0){
- y <- (as.numeric(int_imp())*(input$incremental3/100))/1000}else if(input$newcpm != 0){
- y <- (as.numeric(new_imp())*(input$incremental3/100))/1000}
- })
- int_cost_total <-reactive({as.numeric(int_cost_1())+as.numeric(int_cost_2())+as.numeric(int_cost_3())})
- stat_cost_total <-reactive({as.numeric(input$static)})
- stat_profit <- eventReactive(input$goButton, {((input$budget - (budget()+input$static))/input$budget)*100})
- dym_profit <-reactive({(((input$budget) - (as.numeric(budget()) + (as.numeric(dym_cost_1())+as.numeric(dym_cost_2())+as.numeric(dym_cost_3()))))/input$budget)*100})
- int_profit <-reactive({(((input$budget) - (as.numeric(budget()) + (as.numeric(int_cost_1())+as.numeric(int_cost_2())+as.numeric(int_cost_3()))))/input$budget)*100})
- new_profit_wo_ncpm <-reactive({z1 <- ((input$budget - (as.numeric(budget())+as.numeric(dym_cost_total())+as.numeric(stat_cost_total())+as.numeric(int_cost_total())))/input$budget) * 100
- format(z1,digits = 4)})
- new_profit_w_ncpm <-reactive(z<- {if (input$newcpm != 0){
- new_profit_w_ncpm <- ((input$budget - (as.numeric(new_budget())+as.numeric(dym_cost_total())+as.numeric(stat_cost_total())+as.numeric(int_cost_total())))/input$budget) * 100
- format(new_profit_w_ncpm,digits = 4)
- }
- })
- withoutAV_newcpm <- function(x,x1,x2){
- dff <- data.frame(CampaignBudget=character(), NewImpressions=character(), NewProfit = character())
- dff <- data.frame(paste0("$",as.numeric(x)),format(as.numeric(x1),big.mark = ",",scientific = F),paste0(as.numeric(x2),"%"))
- colnames(dff) <- c("NewCampaignBudget", "NewImpressions", "NewProfit")
- d <- ldply(dff,data.frame)
- colnames(d) <- c("Attributes","Values")
- return(d)
- }
- withAV_newcpm <- function(x,x1,x2,x3) {
- dff <- data.frame(CampaignBudget=character(), NewImpressions=character(), NewProfit = character(),NewProfitWithAV=character())
- dff <- data.frame(paste0("$",x),format(as.numeric(x1),big.mark = ",", scientific = F),paste0(as.numeric(x2),"%"),paste0(as.numeric(x3),"%"))
- colnames(dff) <- c("NewCampaignBudget", "NewImpressions", "NewProfit","NewProfitWithAV")
- d <- ldply(dff,data.frame)
- colnames(d) <- c("Attributes","Values")
- return(d)
- }
- withoutAV <- function(x,x1,x2,x3) {
- dff <- data.frame(CampaignBudget=character(), InternalImpressions=character(), ClientFacingCPM = character(),ExternalImpressions=character())
- dff <- data.frame(paste0("$",x),format(as.numeric(x1),big.mark = ",",scientific = F),x2,format(as.numeric(x3),big.mark = ",",scientific = F))
- colnames(dff) <- c("CampaignBudget", "InternalImpressions", "ClientFacingCPM","ExternalImpressions")
- d <- ldply(dff,data.frame)
- colnames(d) <- c("Attributes","Values")
- return(d)
- }
- withAV <- function(x,x1,x2,x3,x4) {
- dff <- data.frame(CampaignBudget=character(), InternalImpressions=character(), ClientFacingCPM = character(),ExternalImpressions=character(),NewProfit=character())
- dff <- data.frame(paste0("$",x),format(as.numeric(x1),big.mark = ",", scientific = F),x2,format(as.numeric(x3),big.mark = ",", scientific = F),paste0(as.numeric(x4),"%"))
- colnames(dff) <- c("CampaignBudget", "InternalImpressions", "ClientFacingCPM","ExternalImpressions","NewProfit")
- d <- ldply(dff,data.frame)
- colnames(d) <- c("Attributes","Values")
- return(d)
- }
- df4 <- eventReactive(input$goButton, {if ((dym_cost_total() == 0) && (stat_cost_total() == 0) && (int_cost_total() == 0) && (input$newcpm == 0)) {
- y<-withoutAV(budget(),int_imp(),clr_cpm(),ext_imp())}
- else if (((dym_cost_total() == 0) && (stat_cost_total() == 0) && (int_cost_total() == 0)) && (as.numeric(clr_cpm()) != 0)){
- y<-withoutAV_newcpm(as.numeric(new_budget()),new_imp(),as.numeric(new_profit()))}
- else if (((dym_cost_total() != 0) ||(stat_cost_total() != 0) || (int_cost_total() != 0)) && (as.numeric(input$newcpm) == 0)){
- y<-withAV(budget(),int_imp(),clr_cpm(),ext_imp(),new_profit_wo_ncpm())}
- else if ((dym_cost_total() != 0) ||(stat_cost_total() != 0) || (int_cost_total() != 0) && (as.numeric(input$newcpm) != 0)){
- y<-withAV_newcpm(as.numeric(new_budget()),new_imp(),as.numeric(new_profit()),as.numeric(new_profit_w_ncpm()))}
- })
- output$table1 <- renderTable({
- df4()
- })
- }
- shinyApp(ui=ui, server=server)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement