Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.93 KB | None | 0 0
  1. pkg <- c("shiny", "plyr", "dplyr", "data.table", "dplyr")
  2. new.pkg <- pkg[!(pkg %in% installed.packages())]
  3. if (length(new.pkg)) {
  4. install.packages(new.pkg)
  5. }
  6. library(shiny)
  7. library(plyr)
  8. library(dplyr)
  9. ui <- fluidPage(
  10. titlePanel("Profitability Calculator"),
  11. sidebarLayout(position = "left",
  12. sidebarPanel(
  13. tags$head(tags$style("#addnew{color: black;
  14. font-size: 16px;
  15. font-style: italic;
  16. }"
  17. )
  18. ),
  19. selectInput("placement", "Placement:",
  20. c("Display" = "d",
  21. "Video" = "v",
  22. "CPM" = "c")),
  23. tags$hr(),
  24. numericInput(inputId = "budget",
  25. label = "Enter the client budget for the campaign", min = 1,value = 0),
  26. tags$hr(),
  27. numericInput(inputId = "profit",
  28. label = "Enter the profit targeted for this campaign",value=0),
  29. tags$hr(),
  30. numericInput(inputId = "clearbase",
  31. label = "Enter the clear base for this campaign",value=0),
  32. # tags$hr(),
  33. # selectInput("clearbase", "Enter the clearing base range",
  34. # list("0-1","1-2","2-3","3-4","4-5","5-6")),
  35. tags$hr(),
  36. numericInput(inputId = "newcpm",
  37. label = "Enter the new CPM for this campaign",value=0),
  38. tags$hr(),
  39. numericInput(inputId = "dynamic1",
  40. label = "Enter dynamic av1 for the campaign", min = 1,value = 0),
  41. tags$hr(),
  42. numericInput(inputId = "dynamic2",
  43. label = "Enter dynamic av2 for the campaign", min = 1,value = 0),
  44. tags$hr(),
  45. numericInput(inputId = "dynamic3",
  46. label = "Enter dynamic av3 for the campaign", min = 1,value = 0),
  47. tags$hr(),
  48. numericInput(inputId = "static",
  49. label = "Enter static av for the campaign", min = 1,value = 0),
  50. tags$hr(),
  51. numericInput(inputId = "incremental1",
  52. label = "Enter incremental av1 for the campaign", min = 1,value = 0),
  53. tags$hr(),
  54. numericInput(inputId = "incremental2",
  55. label = "Enter incremental av2 for the campaign", min = 1,value = 0),
  56. tags$hr(),
  57. numericInput(inputId = "incremental3",
  58. label = "Enter incremental av3 for the campaign", min = 1,value = 0),
  59. tags$hr(),
  60. actionButton("goButton", "Check")
  61. ),
  62. mainPanel(
  63. h4('Results'),
  64. tags$hr(),
  65. column(8, tableOutput("table1"))
  66. )
  67. ))
  68. server <- function(input, output) {
  69. budget <- eventReactive(input$goButton, {((100 - input$profit) * input$budget) / 100})
  70.  
  71. int_imp <- eventReactive(input$goButton, {x<-(as.numeric(budget())/as.numeric(input$clearbase)) * 1000
  72. format(x,scientific=F)})
  73.  
  74. clr_cpm <- eventReactive(input$goButton,{z <- (if (input$newcpm != 0){
  75. clr_cpm <- as.numeric(input$newcpm)
  76. format(clr_cpm,digits = 3)
  77. }else if (input$newcpm == 0){
  78. clr_cpm <- (input$budget/as.numeric(int_imp())) * 1000
  79. format(clr_cpm,digits = 3)}
  80. )})
  81.  
  82. new_imp <- eventReactive(input$goButton, {x<-((as.numeric(input$budget)/as.numeric(input$newcpm)) * 1000)
  83. format(x, scientific=F)})
  84. new_budget <- eventReactive(input$goButton, {y<-((as.numeric(new_imp()) * as.numeric(input$clearbase)) / 1000)
  85. })
  86.  
  87. new_profit <- eventReactive(input$goButton, {z1 <- ((input$budget - (as.numeric(new_budget())))/input$budget) * 100
  88. format(z1,digits = 4)})
  89.  
  90. ext_imp <- eventReactive(input$goButton, {y<- (input$budget/as.numeric(clr_cpm())) * 1000
  91. format(y, scientific=F)})
  92.  
  93. dym_cost_1 <- eventReactive(input$goButton, {if (input$newcpm == 0){
  94. y <- ((as.numeric(int_imp())*(input$dynamic1/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
  95. y <- ((as.numeric(new_imp())*(input$dynamic1/100)) * as.numeric(input$clearbase))/1000}
  96. })
  97.  
  98. dym_cost_2 <- eventReactive(input$goButton, {if (input$newcpm == 0){
  99. y <- ((as.numeric(int_imp())*(input$dynamic2/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
  100. y <- ((as.numeric(new_imp())*(input$dynamic2/100)) * as.numeric(input$clearbase))/1000}
  101. })
  102.  
  103. dym_cost_3 <- eventReactive(input$goButton, {if (input$newcpm == 0){
  104. y <- ((as.numeric(int_imp())*(input$dynamic3/100)) * as.numeric(input$clearbase))/1000}else if (input$newcpm != 0){
  105. y <- ((as.numeric(new_imp())*(input$dynamic3/100)) * as.numeric(input$clearbase))/1000}
  106. })
  107.  
  108. dym_cost_total <-reactive({as.numeric(dym_cost_1())+as.numeric(dym_cost_2())+as.numeric(dym_cost_3())})
  109.  
  110. int_cost_1 <- eventReactive(input$goButton,{if (input$newcpm == 0){
  111. y <- (as.numeric(int_imp())*(input$incremental1/100))/1000}else if(input$newcpm != 0){
  112. y <- (as.numeric(new_imp())*(input$incremental3/100))/1000}
  113. })
  114.  
  115. int_cost_2 <- eventReactive(input$goButton,{if (input$newcpm == 0){
  116. y <- (as.numeric(int_imp())*(input$incremental2/100))/1000}else if(input$newcpm != 0){
  117. y <- (as.numeric(new_imp())*(input$incremental2/100))/1000}
  118. })
  119.  
  120. int_cost_3 <- eventReactive(input$goButton,{if (input$newcpm == 0){
  121. y <- (as.numeric(int_imp())*(input$incremental3/100))/1000}else if(input$newcpm != 0){
  122. y <- (as.numeric(new_imp())*(input$incremental3/100))/1000}
  123. })
  124.  
  125. int_cost_total <-reactive({as.numeric(int_cost_1())+as.numeric(int_cost_2())+as.numeric(int_cost_3())})
  126.  
  127.  
  128. stat_cost_total <-reactive({as.numeric(input$static)})
  129.  
  130. stat_profit <- eventReactive(input$goButton, {((input$budget - (budget()+input$static))/input$budget)*100})
  131.  
  132. 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})
  133.  
  134. 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})
  135.  
  136. 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
  137. format(z1,digits = 4)})
  138.  
  139. new_profit_w_ncpm <-reactive(z<- {if (input$newcpm != 0){
  140. 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
  141. format(new_profit_w_ncpm,digits = 4)
  142. }
  143. })
  144.  
  145. withoutAV_newcpm <- function(x,x1,x2){
  146. dff <- data.frame(CampaignBudget=character(), NewImpressions=character(), NewProfit = character())
  147. dff <- data.frame(paste0("$",as.numeric(x)),format(as.numeric(x1),big.mark = ",",scientific = F),paste0(as.numeric(x2),"%"))
  148. colnames(dff) <- c("NewCampaignBudget", "NewImpressions", "NewProfit")
  149. d <- ldply(dff,data.frame)
  150. colnames(d) <- c("Attributes","Values")
  151. return(d)
  152. }
  153.  
  154. withAV_newcpm <- function(x,x1,x2,x3) {
  155. dff <- data.frame(CampaignBudget=character(), NewImpressions=character(), NewProfit = character(),NewProfitWithAV=character())
  156. dff <- data.frame(paste0("$",x),format(as.numeric(x1),big.mark = ",", scientific = F),paste0(as.numeric(x2),"%"),paste0(as.numeric(x3),"%"))
  157. colnames(dff) <- c("NewCampaignBudget", "NewImpressions", "NewProfit","NewProfitWithAV")
  158. d <- ldply(dff,data.frame)
  159. colnames(d) <- c("Attributes","Values")
  160. return(d)
  161. }
  162.  
  163. withoutAV <- function(x,x1,x2,x3) {
  164. dff <- data.frame(CampaignBudget=character(), InternalImpressions=character(), ClientFacingCPM = character(),ExternalImpressions=character())
  165. dff <- data.frame(paste0("$",x),format(as.numeric(x1),big.mark = ",",scientific = F),x2,format(as.numeric(x3),big.mark = ",",scientific = F))
  166. colnames(dff) <- c("CampaignBudget", "InternalImpressions", "ClientFacingCPM","ExternalImpressions")
  167. d <- ldply(dff,data.frame)
  168. colnames(d) <- c("Attributes","Values")
  169. return(d)
  170. }
  171.  
  172. withAV <- function(x,x1,x2,x3,x4) {
  173. dff <- data.frame(CampaignBudget=character(), InternalImpressions=character(), ClientFacingCPM = character(),ExternalImpressions=character(),NewProfit=character())
  174. 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),"%"))
  175. colnames(dff) <- c("CampaignBudget", "InternalImpressions", "ClientFacingCPM","ExternalImpressions","NewProfit")
  176. d <- ldply(dff,data.frame)
  177. colnames(d) <- c("Attributes","Values")
  178. return(d)
  179. }
  180.  
  181. df4 <- eventReactive(input$goButton, {if ((dym_cost_total() == 0) && (stat_cost_total() == 0) && (int_cost_total() == 0) && (input$newcpm == 0)) {
  182. y<-withoutAV(budget(),int_imp(),clr_cpm(),ext_imp())}
  183. else if (((dym_cost_total() == 0) && (stat_cost_total() == 0) && (int_cost_total() == 0)) && (as.numeric(clr_cpm()) != 0)){
  184. y<-withoutAV_newcpm(as.numeric(new_budget()),new_imp(),as.numeric(new_profit()))}
  185. else if (((dym_cost_total() != 0) ||(stat_cost_total() != 0) || (int_cost_total() != 0)) && (as.numeric(input$newcpm) == 0)){
  186. y<-withAV(budget(),int_imp(),clr_cpm(),ext_imp(),new_profit_wo_ncpm())}
  187. else if ((dym_cost_total() != 0) ||(stat_cost_total() != 0) || (int_cost_total() != 0) && (as.numeric(input$newcpm) != 0)){
  188. y<-withAV_newcpm(as.numeric(new_budget()),new_imp(),as.numeric(new_profit()),as.numeric(new_profit_w_ncpm()))}
  189. })
  190.  
  191. output$table1 <- renderTable({
  192. df4()
  193. })
  194. }
  195. shinyApp(ui=ui, server=server)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement