本文嘗試對Kaggle中提供的一份“麥當勞菜單中的各類食品的營養成分表”進行數據分析,初步回答頁面中的一個問題,并做一些延伸討論。
Inspiration
How many calories does the average McDonald's value meal contain?
平均下來,每頓麥當勞大概含有多少卡路里?
1.導入數據
下載數據集,解壓后得到名為“menu”的.csv文件,腳本輸入代碼:
library(readr)
menu <- read_csv("C:/Users/Administrator/Desktop/menu.csv")
成功導入相應數據:
腳本輸入代碼:
menu #顯示數據
class(menu)#數據類型顯示
dim(menu)#查看變量的維數
由圖可知,本數據集是一個data.frame類型的對象,包含260條數據記錄、24個變量。
2.數據處理
本次數據分析的目標是:計算平均每頓麥當勞的卡路里數。對于以上問題,我們需要的變量應該為:每種餐品對應的卡路里數。
從表中目測可知,餐品類別有一下9組:Breakfast(早餐)、Beef & Pork(牛肉和豬肉)、Chicken & Fish(雞肉和魚)、Salads(沙拉)、Snacks & Sides(小吃和面包)、Desserts(甜點)、Beverages(飲料)、Coffee & Tea(咖啡和茶)、Smoothies & Shakes(冰沙和奶昔)。因此,我們首先計算出每個類別的餐品所提供的卡路里數:
腳本輸入代碼:
food<-menu
MCfood <- select(food,Category,Calories) #篩選變量列表
by_Category <- group_by(MCfood, Category) #將Category進行分組
by_Category #顯示by_Category數據表
由上圖可知,數據表包含260條數據記錄、2個變量,按照category被分為9組。
3.數據計算
接著輸入代碼:
Category_sum <- summarise(by_Category, count = n(),#統計各分組的數量
mean_calories = mean(Calories, na.rm = TRUE))#計算每組平均卡路里數
Category_sum <- arrange(Category_sum , desc(mean_calories)) #按照卡路里數降序排列
Category_sum #顯示Category_sum 表數據
由表中可知,各分組的餐品的平均卡路里量。Breakfast(早餐)為526.6、Beef & Pork(牛肉和豬肉)為494.0、Chicken & Fish(雞肉和魚)為553.0、Salads(沙拉)為270.0、Snacks & Sides(小吃和面包)為245.8、Desserts(甜點)為222.1、Beverages(飲料)為113.7、Coffee & Tea(咖啡和茶)為283.9、Smoothies & Shakes(冰沙和奶昔)為531.4。
由上述數據,可以繪制出餐品熱量排名圖,腳本輸入代碼:
ggplot(Category_sum ,aes(x =reorder(Category,mean_calories),y = mean_calories))+
geom_bar(stat = "identity",fill = "#B4EEB4",colour = "#BFFFFF",width=0.68) #繪制柱形圖
按照本人的飲食習慣,選擇的午餐的搭配通常為肉類、主食、甜點、飲品。所以,固定主食和甜點不變,我可以選擇的剩余組合是Beef & Pork、Beverages;Beef & Pork、Coffee & Tea;Beef & Pork、Smoothies & Shakes;Chicken & Fish、Beverages;Chicken & Fish、Coffee & Tea;Chicken & Fish、Smoothies & Shakes,共計6種組合。分別計算各組合的卡路里量:
sum(245.8,222.1)#固定主食和甜點的卡路里數
sum1<-sum(245.8,222.1)
a<-sum(494.0,113.7,sum1)#加上Beef & Pork、Beverages的總卡路里數
b<-sum(494.0,283.9,sum1)#加上Beef & Pork、Coffee & Tea的總卡路里數
c<-sum(494.0,531.4,sum1)#加上Beef & Pork、Smoothies & Shakes的總卡路里數
d<-sum(553.0,113.7,sum1)#加上Chicken & Fish、Beverages的總卡路里數
e<-sum(553.0,283.9,sum1)#加上Chicken & Fish、Coffee & Tea的總卡路里數
f<-sum(553.0,531.4,sum1)#加上Chicken & Fish、Smoothies & Shakes的總卡路里數
上述六種午餐組合的卡路里攝入分別為1075.6、1245.8、1493.3、1134.6、1304.8、1552.3,由此可以計算出午餐平均攝入卡路里量。繼續輸入代碼:
mean1<-c(a,b,c,d,e,f)
lunch=mean(mean1)
lunch
由上圖可知,午餐攝入卡路里量為1301.1。
而本人晚餐的組合一般為肉類、主食、飲品,固定主食不變,所選的組合依舊為Beef & Pork、Beverages;Beef & Pork、Coffee & Tea;Beef & Pork、Smoothies & Shakes;Chicken & Fish、Beverages;Chicken & Fish、Coffee & Tea;Chicken & Fish、Smoothies & Shakes,共計6種組合。所以,只需將午餐卡路里平均攝入量減去甜點的222.1,即為晚餐平均卡路里攝入量。輸入代碼:
dinner=lunch-222.1
dinner
由圖可知,本人晚餐攝入卡路里為1078.967。
綜上所述,本人在麥當勞早、中、晚餐的卡路里攝入量分別為526.6、1301.1、1079。平均每頓攝入卡路里數為:
meal_mean=c(526.6,lunch,dinner)
mean(meal_mean)
從圖可知,本人在麥當勞平均每頓攝入卡路里為968.9?。。。。?!
meal_sum=sum(526.6,lunch,dinner)
meal_sum
從圖可知,本人在麥當勞一天攝入平均卡路里為2906.6?。。。。。?/b>
我因此從網上查詢了每日需要卡路里的計算方法:
[(10 × 體重) + (6.25 × 身高) - (5 × 年齡) - 161]*活動量,活動量為1.1-1.3不等。
代入體重51、身高165、年齡26,計算得卡路里需求范圍為:1375.3-1625.3。
這告訴我,在麥當勞吃上三餐,相當于攝入了正常兩天所需要的熱量。哎哎哎~管住嘴、邁開腿啊~~~