前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用R玩转微店汇总报表

用R玩转微店汇总报表

作者头像
生信技能树
发布2018-11-30 17:46:41
1.3K0
发布2018-11-30 17:46:41
举报
文章被收录于专栏:生信技能树

1.新建一个R-project,名叫 financial statements。

(这个地方就很符合jimmy大神的价值观:只允许用打开R-project的方式打开Rstudio,小本本记下来,小心被怼)

2.把微店批量导出的订单明细表和收支明细表放到这个文件夹

3.读取excel表格

代码语言:javascript
复制
fs <- readxl::read_xls('financial statements.xls')
#订单详情表
fs <- readxl::read_xls('financial statements.xls')
#收支明细表
il <- readxl::read_xls('income_list.xls')

订单明细表

收入明细表

自动导出的表,列数足足有几十列,无用信息很多。所以选出有用的几列,并改为英文列名

4.改掉中文列名

代码语言:javascript
复制
#选列和改列名
fs_s <- fs %>%
  select('商品名称',
         '订单金额(不含退款)',
         '买家确认收货时间',
         '退款金额',
         '运费退款')
colnames(fs_s) <- c('goods',
                    'income',
                    'time',
                    'return1',
                    'return2')
il_s <- il %>%
  select("时间",
         "收入(元)",
         "账单类型",
         "交易摘要")
colnames(il_s) <- c('time',
                    'income',
                    'type',
                    'goods')

5.时间处理

报表可以按天汇总,只留日期,不要具体时间

代码语言:javascript
复制
il_st <- il_s %>%
  separate(time,into=c("time","drop"),sep=" ") %>% 
  select(-drop) 
fs_st <- fs_s %>%
  separate(time,into=c("time","drop"),sep=" ") %>% 
  select(-drop)

6.获得精简版的明细表格

这里有一个问题,除了产生退款的订单,其他的退款数值都是空值,应用complete填充,否则无法完成计算!因为缺失值会传染啊。 还有一个坑就是导出报表的数字,它的数据类型是字符,所以计算起来要用as.numeric()来改变!否则就会报错了。

代码语言:javascript
复制
##il需要去掉提现支出,此时少了8行
income_details <- il_st %>%
  filter(type !='提现') %>%
  select('time','goods','income','type') 

#fs需要将退款处的空值改为零,计算收入
fs_details <- fs_st %>%
  complete(nesting(time,goods,income),
           fill=list(return1=0)) %>%
  complete(nesting(time,goods,income,return1),
           fill=list(return2=0)) %>%
  mutate(net_income = as.numeric(income) 
         -as.numeric(return1)
         -as.numeric(return2)
  )%>%#实付
  select(time,goods,net_income)%>%
  arrange(time,goods,net_income)

7.核对订单明细结算的总额和收入明细是否一致

代码语言:javascript
复制
income1 <- sum(fs_details$net_income)
ilcd <- filter(income_details,income>0)#只要>0的
income2 <- sum(as.numeric(ilcd$income))

这两个数字应该相等,对账就完成了。(别看了我編滴)

帅帅地导出xls

代码语言:javascript
复制
write.xlsx(income_details,'收入明细.xls')

接下来就是进行汇总统计。

代码语言:javascript
复制
#先计算薅完羊毛的收入
income <- sum(as.numeric(income_details$income))
#按天数、商品汇总
fs_count <- count(fs_details,time,goods)
fs_sum1 <- summarise(group_by(fs_details,time,goods), 
                     all = sum(as.numeric(net_income), na.rm = F))
day_income <- left_join(fs_count,fs_sum1,by=c('time','goods'))
rm(fs_count,fs_sum1)
#按商品汇总
fs_count <- count(fs_details,goods)
fs_sum1 <- summarise(group_by(fs_details,goods), all = sum(net_income))
goods_income <- left_join(fs_count,fs_sum1,by='goods')%>%
rbind(c('总计',sum(fs_count$n),sum(fs_sum1$all))) %>%
  rbind(c(NA,'支出',outcome),
    c(NA,'净收入',income))
#最后改一下列名
colnames(day_income) <- c('日期','商品','销量','销售额')
colnames(goods_income) <- c('商品','销量','销售额')
colnames(fs_details)<- c('商品','销量','销售额')
#导出
write.xlsx(goods_income,'商品报表.xls')
write.xlsx(day_income,'日营业额报表.xls')

最重要的一张表

两张明细表

学以致用是我本尊了!所以以后只要从微店自动导出列表,然后用这个脚本跑一串,就可以上交给老板咯。解放双手,开心!

如果你刚好用上,那赚了。我捣鼓了一整天。用不上的话,拿来练习一下tidyverse也是好滴!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-10-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.新建一个R-project,名叫 financial statements。
  • 2.把微店批量导出的订单明细表和收支明细表放到这个文件夹
  • 3.读取excel表格
  • 4.改掉中文列名
  • 5.时间处理
  • 6.获得精简版的明细表格
  • 7.核对订单明细结算的总额和收入明细是否一致
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档