通过R脚本实现库存分析的两个内容,一是库存结余量随时间变化的折线图和月同柱状图,二是各个门店库存结余随时间变化的热力图。
R脚本绘制折线图和条形图
library(tidyverse)
library(readxl)
library(patchwork)
df1 <- read_xlsx("库存分析数据.xlsx")
head(df1)
df1$`出售年月(年月日)` = as.Date(df1$`出售年月(年月日)`,"%Y-%m-%d")
df1$`品类上新时间(年月日)` = as.Date(df1$`品类上新时间(年月日)`,"%Y-%m-%d")
#is.na(df1)
df_n <- df1 %>%
mutate(month = cut(`出售年月(年月日)`,breaks = "month")) %>%
group_by(month) %>%
summarise_if(is.numeric,~sum(.)) %>%
mutate(月同比=c(0,(本期结存量[-1] - 本期结存量[-15])/本期结存量[-1])) %>%
select(month,本期结存量,月同比)
p1<- df_n %>%
ggplot(aes(x=month,y=本期结存量,group = 1,color = "Orang"))+
geom_line() +
geom_point()+
theme_minimal()+
theme(legend.position = "none",axis.text.x = element_text(angle = 30, hjust=1))
p1
p2 <- df_n %>%
ggplot(aes(x=month,y=月同比))+
geom_bar(stat = "identity",fill = "#009E73")+
theme(axis.text.x = element_text(angle = 30, hjust=1))
p2
p1/p2
R脚本实现门店信息热力图
df_m <- df1 %>%
mutate(month = cut(`出售年月(年月日)`,breaks = "month")) %>%
group_by(month,门店) %>%
summarise_at(vars(本期结存量),~sum(.))
p1 <- df_m %>%
ggplot(aes(x = month, y= 门店,fill =本期结存量 )) +
geom_tile()+
theme(axis.text.x = element_text(angle = 30,hjust = 1)) +
scale_fill_viridis()+
labs(x = '',y='')+
theme(axis.text.x=element_blank()) +
guides(fill = FALSE)
p1
p2<- df_m%>%
filter( 门店!= "上海七莘路旗舰店") %>%
ggplot(aes(x = month, y= 门店,fill =本期结存量 )) +
geom_tile()+
theme(axis.text.x = element_text(angle = 30,hjust = 1)) +
scale_fill_viridis()
p2
p1 /p2
小结
R脚本实现以上两个分析,有几个关键点。
- 时间信息的分组,
cut(
出售年月(年月日),breaks = "month")
,完成按月分组,从而结合group_by函数和summarise 函数进行归总 - 应用summarise 函数的各种变形,尤其是scope 应用,使得数据归总十分强大
- ggplot 绘图在实现绘图主题定制上脚本会比较多