library(linprog)
## Loading required package: lpSolve
ROI <- c(9/100,18/100,26/100,11/100)
bVect <- c(1180000, 0, 0, -200000, -80000, -60000, 220000, 0, 16200000)
AMatrix <- rbind(
c(1,1,1,1), # TOTAL
c(0.6,-0.4,-0.4,0.6), # SEO + AdWords > 60%
c(-0.2,-0.2,-0.2,0.8), # FB < 20%
c(-1,0,0,0), # Min TV
c(0,0,0,-1), # Min FB
c(0,-1,0,0), # Min SEO
c(0,1,0,0), # Max SEO
c(0,-3,1,0), # Adwords <= 3 SEO
c(2.5,4.30,0.90,3.0) # Campaign reach
)
lpsol <- solveLP(ROI, bVect, AMatrix, TRUE)
OptROI <- paste0("$", formatC(as.numeric(lpsol$opt), format="f", digits=0, big.mark=","))
TVSpend <- paste0("$", formatC(as.numeric(lpsol$solution[1]), format="f", digits=0, big.mark=","))
SEOSpend <- paste0("$", formatC(as.numeric(lpsol$solution[2]), format="f", digits=0, big.mark=","))
AdwordsSpend <- paste0("$", formatC(as.numeric(lpsol$solution[3]), format="f", digits=0, big.mark=","))
FacebookSpend <- paste0("$", formatC(as.numeric(lpsol$solution[4]), format="f", digits=0, big.mark=","))
plot_df <- data.frame(Description=c('Optimum ROI','TV Spend','SEO Spend','Adwords Spend','Facebook Spend'),
Value=c(OptROI,TVSpend,SEOSpend,AdwordsSpend,FacebookSpend))
library(gtable)
library(gridExtra)
library(grid)
tt <- ttheme_minimal(
core=list(bg_params = list(fill = blues9[1:5], col=NA),
fg_params=list(fontface=1,fontsize=20)),
colhead=list(fg_params=list(col="navyblue", fontface=1,fontsize=20)))
g <- tableGrob(plot_df[1:5,], rows = NULL,theme=tt)
g <- gtable_add_grob(g,
grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
t = 2, b = nrow(g), l = 1, r = ncol(g))
g <- gtable_add_grob(g,
grobs = rectGrob(gp = gpar(fill = NA, lwd = 2)),
t = 1, l = 1, r = ncol(g))
grid.newpage()
grid.draw(g)
