使用场景
首先根据以下两个数据集进行处理:
attend.csv
performance.csv
主要需求如下:
两个数据有共同的列,需要合并他们;
根据weekattend获得10个最佳的团队;
绘制图表,根据playoff和non-playoff选择top10的球队作图。
实现代码
两个数据有共同的列,需要合并
at <- read.csv("attend.csv")
pe <- read.csv("performance.csv")
at$X = pe$X = NULL
## i) 组合这两个数据集 ##
common_cols <- Reduce(intersect,list(colnames(at),colnames(pe)))
ap <- merge(at, pe, by.x = common_cols, by.y = common_cols)
根据weekattend获得10个最佳的团队
## ii) 使用dplyr,根据weekattend获得10个最佳团队 ##
q2_group_dat <- ap %>% group_by(name) %>%
mutate(average_attend=sum(na.omit(weekAttend))/(length(unique(week))*length(unique(seasonYear)))) %>%
ungroup()
unique(q2_group_dat[order(-q2_group_dat$average_attend),"name"])[1:10,]
绘制图表,根据playoff和non-playoff选择top10的球队作图
## iii) 绘制一个图表,根据季后赛和非季后赛的平均每周上座率来描绘10支最好的球队。
# 使用forcats包的函数对图表进行适当排序,并很好地呈现图表,为整个图形、轴和图例添加
# 相关的标题
# 10支playoff最好的球队,10支non-playoff最好的球队
q3_playoff_dat <- filter(q2_group_dat, playoffs=="Playoffs")
q3_nonplayoff_dat <- filter(q2_group_dat, playoffs=="No Playoffs")
q3_playoff_dat %>%
count(name) %>%
mutate(name = fct_reorder(name, n, .desc = T))%>%
ggplot(aes(name, n)) + geom_col(fill = '#FF9999') +
coord_flip()#-> p1
q3_nonplayoff_dat %>%
count(name) %>%
mutate(name = fct_reorder(name, n, .desc = T))%>%
ggplot(aes(name, n)) + geom_col(fill = 'skyblue') +
coord_flip() #-> p2