# HW 1 ## 1. product_list裡將兩個變數,誤紀錄為在同一個column,其將其分開為兩個變數Product(數字部分)及Item(商品部分),取代原product_list。 ```R # 將資料輸入 product_list <- read.csv("product_list.csv") # 為了在後面合併表格時不會資料型別錯誤,所以加上 convert = TRUE product_list <- product_list %>% separate(Item, into=c("Product", "Item"), sep = "_", convert = TRUE) ``` 輸出: ![](https://hackmd.io/_uploads/SyRA72ifa.png) ## 2. 將3個報表合併為full.table ```R # 將資料輸入 client_list <- read.csv("client_list.csv") salesdata <- read.csv("salesdata.csv") # 捨棄掉X欄位 client_list <- client_list %>% select(!(X)) salesdata <- salesdata %>% select(!(X)) # 先把salesdata與client_list合併,再與product_list併 result <- salesdata %>% left_join(client_list, by = "Client") %>% left_join(product_list, by = "Product") ``` 輸出:(一部分) ![](https://hackmd.io/_uploads/ByyREnjzp.png) ## 3. 在full.table. 新增一個變數「總消費」為spend = UnitPrice*Quantity ```R # 使用mutate新增欄位 result <- result %>% mutate(Spend = UnitPrice * Quantity) ``` 輸出:(一部分) ![](https://hackmd.io/_uploads/Hya7E3iMa.png) ## 4. 在full.table將會員等級分組,其中gold和diamond的顧客為一組,其他等級的為一組,以敘述統計針對兩組客戶進行比較介紹(例如平均年紀、性別、國家、消費情況差異等)。 第一組: ```R # 將gold和diamond的顧客分為一組,另外存一個df high_level <- result %>% filter(Membership == "gold" | Membership == "diamond") # 計算平均 high_level %>% summarise( 平均花費 = mean(Spend), 平均年齡 = mean(Age) ) # 統計性別人數 high_level %>% select(Gender) %>% table() # 統計國家人數 high_level %>% select(Region) %>% table() # 統計產品購買數 high_level %>% select(Item) %>% table() ``` 第二組: ```R # 將非gold和diamond的顧客分為一組,另外存一個df normal_level <- result %>% filter(!(Membership == "gold" | Membership == "diamond")) # 計算平均 normal_level %>% summarise( 平均花費 = mean(Spend), 平均年齡 = mean(Age) ) # 統計性別人數 normal_level %>% select(Gender) %>% table() # 統計國家人數 normal_level %>% select(Region) %>% table() # 統計產品購買數 normal_level %>% select(Item) %>% table() ``` 比較: 1. ![](https://hackmd.io/_uploads/r1T8phoMa.png) 第二組的平均花費較高,年齡稍低於第一組 2. ![](https://hackmd.io/_uploads/Sycq6nsMa.png) 第一組男性比例較高,第二組男女比例差不多 3. ![](https://hackmd.io/_uploads/rkWW0nsz6.png) 兩組之間僅在中國、德國、泰國有較顯著的數量差異 4. ![](https://hackmd.io/_uploads/Hk0r02jGp.png) 第一組買iPad及iMac的訂單較多 ## 5. 在full.table針對男性客戶進行分析(例如平均年紀、國家、消費情況等),並對他們在不同產品的「總消費」畫圖分析。 ```R # 將男性客戶分出來 male_result <- result %>% filter(Gender == "male") # 計算平均 male_result %>% summarise( 平均花費 = mean(Spend), 平均年齡 = mean(Age) ) # 統計國家人數 male_result %>% select(Region) %>% table() ``` 輸出:(一部分) 1. ![](https://hackmd.io/_uploads/Hk4ZGx3fa.png) 2. ![](https://hackmd.io/_uploads/SyWVGl3GT.png) 平均花費比全部總平均高,年齡則是差不多 3. ![](https://hackmd.io/_uploads/S1Kyfg2MT.png) ```R # 產生畫圖需要的資料 draw_data <- male_result %>% group_by(Item) %>% summarise( Total = sum(Spend) ) # 畫出圖表 ggplot(draw_data, aes(x = Item, y = Total)) + geom_bar(stat = "identity") + labs(x = "Items", y = "Spend Total") + theme_classic() ``` 輸出: ![](https://hackmd.io/_uploads/Hk3jfghMa.png)