Skip to content

Instantly share code, notes, and snippets.

@DraceZhan
Created February 5, 2017 04:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DraceZhan/02bce3d52081639dd36614b869aff1e6 to your computer and use it in GitHub Desktop.
Save DraceZhan/02bce3d52081639dd36614b869aff1e6 to your computer and use it in GitHub Desktop.
Video Game Sales as of 12/16 data analysis
#load libraries needed
#install.packages(c("wordcloud","tm"),repos="http://cran.r-project.org")
#devtools::install_github("ricardo-bion/ggradar", dependencies=TRUE)
library(wordcloud)
library(tm)
library(tidyr)
library(dplyr)
library(ggplot2)
library(corrplot)
library(ggradar)
library(scales)
# read the data from
VGdata = read.csv('Video_Games_Sales_Dec_2016.csv', stringsAsFactors = F)
#verify data structure and summary
summary(VGdata)
str(VGdata)
VGdata[c(2,4,5,15,16)] <- lapply(VGdata[c(2,4,5,15,16)], factor)
VGdata[3] <- lapply(VGdata[3], as.numeric)
sony<-c('PS','PS2','PS3','PS4' ,'PSP','PSV')
microsoft<-c('PC','X360','XB','XOne')
nintendo<-c('3DS','DS','GBA','GC','N64','Wii','WiiU', 'GB', 'GBA', 'GC', 'NES', 'N64', 'SNES')
sega<-c('DC', 'SAT', 'GEN', 'GG', 'SCD')
PC<-c('2600', '3DO')
companyFunc<-function(x){
if (x %in% sony == TRUE) {return('SONY')}
else if(x %in% microsoft == TRUE) {return('MICROSOFT')}
else if(x %in% nintendo == TRUE) {return('NINTENDO')}
else if(x %in% sega == TRUE) {return('SEGA')}
else{return('OTHER')}
}
VGdata$companyPlatform<-sapply(VGdata$Platform, companyFunc)
colnames(VGdataCor) = c(
'NA Sales', 'EU Sales', 'Japan Sales', 'Other Sales', 'Critic Score', 'Global Sales',
'Total Critic Reviews', 'User Score', 'Total User Score')
rownames(VGdataCor) = c(
'NA Sales', 'EU Sales', 'Japan Sales', 'Other Sales', 'Critic Score', 'Global Sales',
'Total Critic Reviews', 'User Score', 'Total User Score')
#converting int columns to numerics in order to run a correlation matrix
VGdata[c(6:14)] <- lapply(VGdata[c(6:14)], as.numeric)
VGdataCor = cor(VGdata[,6:14], use="pairwise.complete.obs")
corrplot(VGdataCor, method = 'circle') #looks ugly ask why
#We see that sales between regions correlate with each other positively but Japan's sales seem less correlated than other regions.
#From this we can infer that games that appeal to the Japanese market aren't necessarily the same as NA, EU & other regions
VGdata$Critic_Score = VGdata$Critic_Score/10
#Let's examine mean score according to genre
genreAvgScore = VGdata %>% group_by(Genre) %>% summarise(avgUser = mean(User_Score, na.rm = T), avgCritic = mean(Critic_Score, na.rm = T))
genreAvgScore = genreAvgScore[-1,]
genreAvgScore = genreAvgScore %>% gather(key = 'type', value = 'scores', 2:3)
ggplot(VGdata, aes(x=Critic_Score, y=NA_Sales
)) +geom_point(aes(color = Genre)) + geom_smooth() + ylim(c(0,15))
Avgplot = ggplot(genreAvgScore, aes(x=Genre, y=scores, fill = type)) + geom_bar(stat='identity', position = 'dodge')
JP.NA.salesPlot = ggplot(VGdata, aes(x = JP_Sales, y= NA_Sales)) + geom_point(aes(color=Genre))
JP.NA.salesPlot
#we see that outliers create issues in the visualization
JP.NA.salesPlot + xlim(c(0,2))+ylim(c(0,5))
JP.NA.salesPlot + xlim(c(0,1))+ylim(c(0,3))
JP.EU.SalesPlot = ggplot(VGdata, aes(x = JP_Sales, y= EU_Sales)) + geom_point(aes(color=Genre))
JP.EU.SalesPlot + xlim(c(0,5)) + ylim(c(0,2.5))
NA.EU.SalesPlot = ggplot(VGdata, aes(x = NA_Sales, y=EU_Sales)) + geom_point(aes(color=Genre))
NA.EU.SalesPlot + xlim(c(0,5)) + ylim(c(0,7.5))
#what is the best selling genre & platform by year of release? Most popular?
YearGrp = VGdata %>% group_by(Year_of_Release, Genre) %>% summarise(total.genre.sales = sum(Global_Sales))
YearMaxGrp = YearGrp %>% group_by(Year_of_Release) %>% slice(which.max(total.genre.sales))
YearTopTwoGenre = YearGrp %>% group_by(Year_of_Release) %>%top_n(2)
ggplot(YearTopMaxGrp, aes(x=Year_of_Release, y=total.genre.sales)) + geom_bar(stat='Identity', aes(fill=Genre))
YearGrpPlat = VGdata %>% group_by(Year_of_Release, Platform) %>% summarise(total.plat.sales = sum(Global_Sales))
YearMaxPlat = YearGrpPlat %>% group_by(Year_of_Release) %>%slice(which.max(total.plat.sales))
YearTopTwoPlat = YearGrpPlat %>% group_by(Year_of_Release) %>%top_n(2)
ggplot(YearTopTwoPlat, aes(x=Year_of_Release, y=total.plat.sales)) + geom_bar(stat='Identity', position = 'dodge', aes(fill=Platform))
#Word Cloud
BestSeller = VGdata %>% group_by(Year_of_Release) %>% filter(Global_Sales==max(Global_Sales)) %>% arrange(Year_of_Release)
BestSeller$Genre = as.factor(BestSeller$Genre)
YearMaxGrp$Genre = as.factor(YearMaxGrp$Genre)
BestSeller$Name = gsub('Pokémon', 'Pokemon', BestSeller$Name)
BestSeller$Name = gsub('/', ' ', BestSeller$Name)
BestSeller$Name = gsub('-', '', BestSeller$Name)
BestSeller$Name = gsub(':', ' ', BestSeller$Name)
BestSellerCorpus = Corpus(VectorSource(BestSeller$Name))
BestSellerCorpus = tm_map(BestSellerCorpus, content_transformer(tolower))
BestSellerCorpus = tm_map(BestSellerCorpus, removeWords, stopwords('english'))
BestSellerM = TermDocumentMatrix(BestSellerCorpus)
BestSellerM = as.matrix(BestSellerM)
colnames(BestSellerM) = BestSeller$Genre
BestSellerM = t(rowsum(t(BestSellerM), group = rownames(t(BestSellerM))))
#darker colors = more frequent
comparison.cloud(BestSellerM, colors=brewer.pal(length(levels(BestSeller$Genre)), "Paired"), scale=c(3,0.5), title.size = 1)
#trends of sales by region
tot_region_sales = VGdata %>% group_by(Year_of_Release) %>% summarise(tot_NA_sales = sum(
NA_Sales), tot_EU_sales = sum(EU_Sales), tot_JP_sales = sum(JP_Sales))
ggplot(data = tot_region_sales, aes(x = Year_of_Release)) + geom_line(aes(y=tot_NA_sales, colour = 'NA Sales'))+ geom_line(
aes(y=tot_EU_sales, colour = 'EU Sales')) + geom_line(aes(y=tot_JP_sales, colour = 'JP Sales'))
#Console Companies
bigThree = VGdata %>% group_by(companyPlatform) %>% summarise(Total_Sales = sum(Global_Sales), Total_Users = sum(User_Count, na.rm = T),
'NA Sales' = sum(NA_Sales),
'EU Sales' = sum(EU_Sales),
'JP Sales' = sum(JP_Sales),
'Other Sales' = sum(Other_Sales))
ggplot(bigThree, aes(factor(1), y=Total_Sales, fill = factor(companyPlatform))) + geom_bar(stat = 'Identity')+ coord_polar(theta='y')
ggplot(bigThree, aes(factor(1), y=Total_Users, fill = factor(companyPlatform))) + geom_bar(stat = 'Identity')+ coord_polar(theta='y')
#A look into the data shows that NA's
companyNoRecUsers = VGdata%>%group_by(companyPlatform) %>% slice(which(is.na(User_Count)))
companyNoRecUsers =companyNoRecUsers %>% group_by(companyPlatform) %>% summarise_each(funs(sum), one_of(c('NA_Sales', 'EU_Sales', 'Global_Sales', 'JP_Sales', 'Other_Sales')))
companyNaNSums = VGdata %>% group_by(companyPlatform) %>% count(companyPlatform)
companyNoRecUsers = merge(companyNoRecUsers, companyNaNSums)
colnames(companyNoRecUsers)[7] = 'Total_Missing_UserCounts'
companyNoRecUsers[1] = lapply(companyNoRecUsers[1], factor)
ggplot(companyNoRecUsers, aes(x=companyPlatform, y=Total_Missing_UserCounts, fill = companyPlatform)) + geom_bar(
stat = 'identity')
#Consoles per Region
#scaled_bigThree = bigThree %>% mutate(Total_NA_Sales = Total_NA_Sales/sum(Total_NA_Sales), Total_EU_Sales = Total_EU_Sales/sum(Total_EU_Sales),Total_JP_Sales = Total_JP_Sales/sum(Total_JP_Sales), Total_Other_Sales = Total_Other_Sales/sum(Total_Other_Sales))
scaled_bigThree = bigThree %>% mutate_each(funs(rescale), -companyPlatform) %>% select(-Total_Sales, -Total_Users)
ggradar(scaled_bigThree)
ggplot(VGdata, aes(x=Critic_Score, y=NA_Sales)) +geom_point(
aes_string(color = 'Genre')) + geom_smooth() + ylim(c(0,15))
#load libraries needed
#install.packages(c("wordcloud","tm"),repos="http://cran.r-project.org")
#devtools::install_github("ricardo-bion/ggradar", dependencies=TRUE)
library(wordcloud)
library(tm)
library(tidyr)
library(dplyr)
library(ggplot2)
library(corrplot)
library(Rttf2pt1)
library(ggradar)
library(scales)
library(shinydashboard)
library(RColorBrewer)
library(DT)
VGdata = read.csv('data\\Video_Games_Sales_Dec_2016.csv', stringsAsFactors = F)
#VGdata = read.csv('data/Video_Games_Sales_Dec_2016.csv', stringsAsFactors = F) for mac/linux deployment locally
VGdata[c(2,4,5,15,16)] <- lapply(VGdata[c(2,4,5,15,16)], factor)
VGdata[3] <- lapply(VGdata[3], as.numeric)
sony<-c('PS','PS2','PS3','PS4' ,'PSP','PSV')
microsoft<-c('PC','X360','XB','XOne')
nintendo<-c('3DS','DS','GBA','GC','N64','Wii','WiiU', 'GB', 'GBA', 'GC', 'NES', 'N64', 'SNES')
sega<-c('DC', 'SAT', 'GEN', 'GG', 'SCD')
PC<-c('2600', '3DO')
companyFunc<-function(x){
if (x %in% sony == TRUE) {return('SONY')}
else if(x %in% microsoft == TRUE) {return('MICROSOFT')}
else if(x %in% nintendo == TRUE) {return('NINTENDO')}
else if(x %in% sega == TRUE) {return('SEGA')}
else{return('OTHER')}
}
VGdata$companyPlatform<-sapply(VGdata$Platform, companyFunc)
VGdata$Critic_Score = VGdata$Critic_Score/10
VGdata[c(6:14)] <- lapply(VGdata[c(6:14)], as.numeric)
VGdataCor = cor(VGdata[,6:14], use="pairwise.complete.obs")
colnames(VGdataCor) = c(
'NA Sales', 'EU Sales', 'Japan Sales', 'Other Sales', 'Critic Score', 'Global Sales',
'Total Critic Reviews', 'User Score', 'Total User Score')
rownames(VGdataCor) = c(
'NA Sales', 'EU Sales', 'Japan Sales', 'Other Sales', 'Critic Score', 'Global Sales',
'Total Critic Reviews', 'User Score', 'Total User Score')
genreAvgScore = VGdata %>% group_by(Genre) %>% summarise(avgUser = mean(User_Score, na.rm = T), avgCritic = mean(Critic_Score, na.rm = T))
genreAvgScore = genreAvgScore[-1,]
genreAvgScore = genreAvgScore %>% gather(key = 'type', value = 'scores', 2:3)
YearGrp = VGdata %>% group_by(Year_of_Release, Genre) %>% summarise(total.genre.sales = sum(Global_Sales))
YearMaxGrp = YearGrp %>% group_by(Year_of_Release) %>% slice(which.max(total.genre.sales))
YearTopTwoGenre = YearGrp %>% group_by(Year_of_Release) %>%top_n(2)
YearGrpPlat = VGdata %>% group_by(Year_of_Release, Platform) %>% summarise(total.plat.sales = sum(Global_Sales))
YearMaxPlat = YearGrpPlat %>% group_by(Year_of_Release) %>%slice(which.max(total.plat.sales))
YearTopTwoPlat = YearGrpPlat %>% group_by(Year_of_Release) %>%top_n(2)
BestSeller = VGdata %>% group_by(Year_of_Release) %>% filter(Global_Sales==max(Global_Sales)) %>% arrange(Year_of_Release)
BestSeller$Genre = as.factor(BestSeller$Genre)
YearMaxGrp$Genre = as.factor(YearMaxGrp$Genre)
BestSeller$Name = gsub('Pokémon', 'Pokemon', BestSeller$Name)
BestSeller$Name = gsub('/', ' ', BestSeller$Name)
BestSeller$Name = gsub('-', '', BestSeller$Name)
BestSeller$Name = gsub(':', ' ', BestSeller$Name)
BestSellerCorpus = Corpus(VectorSource(BestSeller$Name))
BestSellerCorpus = tm_map(BestSellerCorpus, content_transformer(tolower))
BestSellerCorpus = tm_map(BestSellerCorpus, removeWords, stopwords('english'))
BestSellerM = TermDocumentMatrix(BestSellerCorpus)
BestSellerM = as.matrix(BestSellerM)
colnames(BestSellerM) = BestSeller$Genre
BestSellerM = t(rowsum(t(BestSellerM), group = rownames(t(BestSellerM))))
tot_region_sales = VGdata %>% group_by(Year_of_Release) %>% summarise(tot_NA_sales = sum(
NA_Sales), tot_EU_sales = sum(EU_Sales), tot_JP_sales = sum(JP_Sales))
bigThree = VGdata %>% group_by(companyPlatform) %>% summarise(Total_Sales = sum(Global_Sales), Total_Users = sum(User_Count, na.rm = T),
'NA' = sum(NA_Sales),
'EU' = sum(EU_Sales),
'JP' = sum(JP_Sales),
'Other' = sum(Other_Sales))
scaled_bigThree = bigThree %>% mutate_each(funs(rescale), -companyPlatform) %>% select(-Total_Sales, -Total_Users)
companyNoRecUsers = VGdata%>%group_by(companyPlatform) %>% slice(which(is.na(User_Count)))
companyNoRecUsers =companyNoRecUsers %>% group_by(companyPlatform) %>% summarise_each(funs(sum), one_of(c('NA_Sales', 'EU_Sales', 'Global_Sales', 'JP_Sales', 'Other_Sales')))
companyNaNSums = VGdata %>% group_by(companyPlatform) %>% count(companyPlatform)
companyNoRecUsers = merge(companyNoRecUsers, companyNaNSums)
colnames(companyNoRecUsers)[7] = 'Total_Missing_UserCounts'
companyNoRecUsers[1] = lapply(companyNoRecUsers[1], factor)
shinyServer(function(input, output) ({
output$corr <- renderPlot({corrplot(VGdataCor, method = 'pie', order = 'hclust')
})
output$score <- renderPlot({ggplot(VGdata, aes_string(x=input$rate, y=input$sale)) +geom_point(
aes(color = Genre)) + geom_smooth() + ylim(c(0,15)) + ggtitle("Review Scores versus Unit Sales(in millions)")})
output$regSale<- renderPlot({ggplot(VGdata, aes_string(
x = input$reg1, y= input$reg2)) + geom_point(aes(color=Genre)) +geom_smooth()})
output$avgGscore <- renderPlot({ggplot(genreAvgScore, aes(x=Genre, y=scores, fill = type, group =type)) + geom_bar(
stat='identity', position = 'dodge') + ggtitle('Average Genre Review Scores')})
output$wordc <- renderPlot({comparison.cloud(BestSellerM, colors=brewer.pal(length(levels(BestSeller$Genre)), "Paired"), scale=c(3,0.5), title.size = 1)})
output$ConsoleComp <- renderPlot({ggplot(bigThree, aes(x=factor(1), y=Total_Sales, fill = companyPlatform)) + geom_bar(stat = 'Identity')+ coord_polar(theta='y')+ theme(axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.text.x=element_blank())+ ggtitle('Distribution of Sales Across Regions') +ylab('Sales Distribution')})
output$ConsoleComp1 <- renderPlot({ggplot(bigThree, aes(x=factor(1), y=Total_Users, fill = companyPlatform)) + geom_bar(stat = 'Identity')+ coord_polar(theta='y')+ theme(axis.title.y=element_blank(),
axis.text.y=element_blank(),
axis.ticks.y=element_blank(),
axis.ticks.x=element_blank(),
axis.text.x=element_blank()) + ggtitle('Users Count Across Regions')+ylab('Number of User Reviews')})
output$topTwoGenre <- renderPlot({ggplot(YearTopTwoGenre, aes(x=Year_of_Release, y=total.genre.sales)) + geom_bar(stat='Identity', aes(fill=Genre))})
output$topTwoPlat <- renderPlot({ggplot(YearTopTwoPlat, aes(x=Year_of_Release, y=total.plat.sales)) + geom_bar(stat='Identity', position = 'stack', aes(fill=Platform))+xlab(
'Year of Release') + ylab('Units Sold in Millions') + ggtitle('Top Two Console Games Sold')})
output$YearRegionSales <-renderPlot({ggplot(data = tot_region_sales, aes(x = Year_of_Release)) + geom_line(aes(y=tot_NA_sales, colour = 'NA Sales'))+ geom_line(aes(y=tot_EU_sales, colour = 'EU Sales')) + geom_line(aes(y=tot_JP_sales, colour = 'JP Sales')) + xlab(
'Units sold in Millions') + ylab('Year of Release') + ggtitle('Regional Units Sold Comparison')
})
output$radar <-renderPlot({ggradar(scaled_bigThree) + ggtitle('Regional Performance of Consoles')})
output$table <-renderDataTable({
datatable(VGdata, rownames=FALSE) %>%
formatStyle(input$selected,
background="skyblue", fontWeight='bold')})
})
)
shinyUI(dashboardPage(
dashboardHeader(title = 'Analysis of Video Game Sales since 1980 to Dec 2016'),
dashboardSidebar(
sidebarUserPanel("Content"),
sidebarMenu(
menuItem("Intro", tabName = "markdown"),
menuItem("Correlation Matrix", tabName = "corr"),
menuItem("Genre Data Visualization", tabName = "Genre"),
menuItem("Best Seller Words by Genre", tabName = 'wordc'),
menuItem("Console Wars Sales", tabName = 'ConsoleComp'),
menuItem("Regional Yearly Sales", tabName = "YearRegionSales"),
menuItem("Do Ratings Affect Sales",tabName = 'score'),
menuItem("Regional Influence Total Sales", tabName = 'regSale'),
menuItem("Data", tabName = "data", icon = icon("database"))
)
),
dashboardBody(
tabItems(
tabItem(tabName = "markdown", h1(img(src="pic.jpg", height = 400)),
h1(class = 'text-muted','"He who fails to plan is planning to fail
", Churchill'),
p(paste("In 1970, Atari was an industry giant in Silicon Valley with one of the largest R&D Divisions. In 1983, they
played a large role in creating the video game crash and then became defunct in 1984. Nintendo was initially founded
as a card company but blossomed into the console industry when Gunpei Yokoi pioneered the handheld console in
Nintendo's Game&Watch series. Sixteen years later, he would also be responsible for one of their biggest console failures
in their Virtual Boy. In 1979, Sony produced the world's first portable music player, the Walkman. Expanding rapidly
through the electronics market, Sony was thought to be too big to fail. However, strings of commercial mistakes lead to a near
demise till Sony was saved by their Playstation 2, which has now reported to be the best selling console of all time. Now with the
entry of mobile apps into the video game market, it's up to the industry giants once again, to adapt or die.")),
p(paste("This app is an alpha project to look at various trends in the console gaming industry using Kaggle's Video Game Sales dataset."))),
tabItem(tabName = "corr", h2(plotOutput('corr')),
p(class = "text-muted",paste("The standard correlation matrix doesn't display anything unexpected. Most columns with
similar class data tend to correlate with each other. Pie chart method is used to give clarity on correlation coefficients."
))),
tabItem(tabName = "Genre", p(class = "text-muted",
paste('A common opinion is that critics tend to give more favorable reviews compared to users but we see critics score
and user score are fairly similar with the average user giving higher scores on average per genre than critics.
The only outlier is along the sports column where critics rate them higher than users do. Sports are also by
far the most likely genre to be franchised such as "Madden", "NFL", etc. where each edition only offers minor improvements.
For a critic where games are typically played for a smaller span of time, franchised series are judged mostly on individual
merit whereas users may not view paying for minor improvements to be justified to the same degree.'
), h1(plotOutput('avgGscore')),
p(class = "text-muted",
paste("Sales wise, desired genres follow very strong trends. In the earlier 80's and 90's, when technology aren't
as Sega's own mascot, Sonic the Hedgehog. Early shooters such as Asteroids and Space Invaders also did well in the
pre-8bit era. As technology progressed and systems became more powerful, we see a trend towards genres that
were able to demonstrate the more powerful graphics and engines. By 2000, action games took over the market
and never let up. Note that 2016's data hasn't been completely processed yet hence the lower numbers."
)),h1(plotOutput('topTwoGenre')))
),
tabItem(tabName = "wordc", h1(plotOutput('wordc')),
paste('Word cloud of best selling words in title by Genre. Frequency of word is signified by color density.'
)),
tabItem(tabName = "ConsoleComp", p(class = "text-muted",
paste("The console wars started between Nintendo and Sega. While history should record that Nintendo was ultimately
victorious, the big stories since 2010 has been between Microsoft and Sony. However, as demonstrated by the radar plot,
Sony's global dominance in the console market carries them through. In addition, we see Japan's loyalty to the national
brand under Nintendo with Microsoft doing exceptionally poor in the region. In particular, we also notice Nintendo's dominance
from 2000 to 2008 due to the popularity of their portable consoles such as the Nintendo DS. They were overthrown by Sony's Playstation
as mobiles become increasingly the go to choice for small portable app based games. Current trends show Nintendo has yet to been unable to
wrest the console market from Sony")),
h1(plotOutput('radar')),
h1(plotOutput('topTwoPlat')),
p(paste('By examining the pie chart, it looks as if Sony and Nintendo are controlling equal shares of the market, one must remember that Nintendo
had a "head start". Since this pie chart is recording distribution of sales since 1980, one can conclude that Nintendo is actually losing market
shares to Sony and Microsoft.
')),
h1(
plotOutput('ConsoleComp')),
p(paste("There are also more reviews submitted for Microsoft's console games compared to reviews submitted from other console
companies. Given, that the reviews are mostly pulled from English speaking regions, there may also be correlation between Microsoft's
console performance in sales and whether or not the region speaks English.
")), h1(plotOutput('ConsoleComp1'))
),
tabItem(tabName = "YearRegionSales", fluidRow(box(width =12, plotOutput('YearRegionSales')))),
tabItem(tabName = "data","Data Base", fluidRow(box(width=12, DT::dataTableOutput("table")))),
tabItem(tabName = "score", fluidRow(box(width = 12, title = "Controls",
selectInput(inputId = "rate",
label = "Rated By",
choices = list("Critics Ratings" = "Critic_Score",
"Users Ratings" = "User_Score")),
selectInput(inputId = "sale",
label = "Regions",
choices = list("NA Sales" = "NA_Sales",
"EU Sales" = "EU_Sales",
"JP Sales" = "JP_Sales",
"Other Region Sales" = "Other_Sales",
"Global Sales" = "Global_Sales")),
h1(plotOutput('score'))))),
tabItem(tabName = "regSale", fluidRow(box(width =12, title="Regions",
selectInput(inputId = "reg1",
label = "Region 1",
choices = list("North America" = 'NA_Sales',
"Europe" = 'EU_Sales',
"Japan" = 'JP_Sales',
"other" = "Other_Sales",
"Global" = "Global_Sales")),
selectInput(inputId = "reg2",
label = "Region 2",
choices = list("North America" = 'NA_Sales',
"Europe" = 'EU_Sales',
"Japan" = 'JP_Sales',
"other" = "Other_Sales",
"Global" = "Global_Sales")))),
h1(plotOutput('regSale')))
)
))
)
@DraceZhan
Copy link
Author

Draft 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment