iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
1
Data Technology

你都在公司都在幹啥R? R語言資料分析經驗分享系列 第 5

【05】當老闆說了:喔喔喔!那這些月營收之中,又是哪些東西賣的最好啊?

  • 分享至 

  • xImage
  •  

Well… 資料分析大概就是這樣,每當你回答了一個疑問,就會再產生更多的疑問等著你去分析...目前我們的商品名稱是這個樣子:”品項(品牌)” ,所以我們要把品名這個欄位拆成兩欄,分別是品項和品牌,這邊我們需要tidyr 這個library,利用裡面的separate ,將可以將欄位切開。

#install.packages("tidyr")
library(tidyr)

result <- orders %>%
    mutate(Month = as.Date(orders$CREATETIME, "%Y-%m-%d %H:%M:%S")) %>%
    mutate(Month = substring(Month,1,7)) %>%
    separate(NAME, c("Category", "Brand"), sep="\\(")

https://ithelp.ithome.com.tw/upload/images/20171222/20107299Yr9svsPrGK.png

再來依照前幾天的教學,應該知道如果要用月份分可以用group_by(),但這次除了月份以外,我們還要依照Category 分,所以我們可以這樣子寫。

result <- orders %>%
    mutate(Month = as.Date(orders$CREATETIME, "%Y-%m-%d %H:%M:%S")) %>%
    mutate(Month = substring(Month,1,7)) %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    group_by(Month, Category) %>%
    summarise(Income = sum(PRICE))

https://ithelp.ithome.com.tw/upload/images/20171222/20107299VF5WBl7C4W.png

ok,我們用group_by()分好了時間與品項,不過這樣有779筆資料...,我希望可以Month變成行,Category變成欄,這時,就要介紹spread() 這個函式啦,

result <- orders %>%
    mutate(Month = as.Date(orders$CREATETIME, "%Y-%m-%d %H:%M:%S")) %>%
    mutate(Month = substring(Month,1,7)) %>%
    separate(NAME, c("Category", "Brand"), sep="\\(") %>%
    group_by(Month, Category) %>%
    summarise(Income = sum(PRICE)) %>%
    spread(Category, Income, fill=0)

spread()的第一個參數放的是欲被拆解的欄位,第二個欄位是被拆解之後它所代表的值,fill 則是代表如果這個欄位不幸沒有值,那他的預設值是什麼,這邊就給他0,然後把上面程式碼反白起來,按下command+enter, Bang!

https://ithelp.ithome.com.tw/upload/images/20171222/20107299CekwR4IpOQ.png

最後加上簡單的分析,就可以印出營收最高的商品囉!

category_sum = colSums(result[,-1])
highest_category_index = which(category_sum==max(category_sum))
print(paste0("Income最高的商品:",colnames(result[,-1])[highest_category_index]
))

https://ithelp.ithome.com.tw/upload/images/20171222/20107299DdrR0S04Us.png

ref:
day5原始碼


上一篇
【04】當老闆想問:話說...經營至今,我們的每個月的營收狀況如何啊?
下一篇
【06】當老闆問說:嗯...營收最好的是掌上型電玩啊,那第二、第三名呢?能畫個圖嗎?
系列文
你都在公司都在幹啥R? R語言資料分析經驗分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言