數說:在麥當勞吃三餐是什麼樣的後果?
本文嘗試對Kaggle中提供的一份「麥當勞菜單中的各類食品的營養成分表」進行數據分析,初步回答頁面中的一個問題,並做一些延伸討論。
Inspiration
How many calories does the average McDonalds 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) #繪製柱形圖
由上圖可以清楚地看出各類餐品的熱量由由高到低,排名依次為Chicken & Fish(雞肉和魚)、Smoothies & Shakes、Breakfast(早餐)、Beef & Pork(牛肉和豬肉)、Coffee & Tea(咖啡和茶)、Salads(沙拉)、Snacks & Sides(小吃和麵包)、Desserts(甜點)、Beverages(飲料)。
按照本人的飲食習慣,選擇的午餐的搭配通常為肉類、主食、甜點、飲品。所以,固定主食和甜點不變,我可以選擇的剩餘組合是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的總卡路里數
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
綜上所述,本人在麥當勞早、中、晚餐的卡路里攝入量分別為526.6、1301.1、1079。
我們餅圖來表示上述結果,腳本輸入代碼:
meal<-c("breakfast","lunch","dinner")
Calories<-c(526.6,1301.1,1079)
meal_data<-data.frame(meal,Calories)
colnames(meal_data)<-c(meal,Calories)
ggplot(meal_data ,aes(x =meal,y = Calories))+
geom_bar(stat = "identity",fill = "#B4EEB4",colour = "#BFFFFF",width_=0.68)+coord_polar(theta = "x")
接下來,我們再計算一下平均每頓攝入卡路里數為:
meal_mean=c(526.6,lunch,dinner)
mean(meal_mean)
從上圖可知,本人在麥當勞平均每頓攝入卡路里為968.9!!!!!!meal_sum=sum(526.6,lunch,dinner)
meal_sum
從上圖可知,本人在麥當勞一天攝入平均卡路里為2906.6!!!!!!
我因此從網上查詢了每日需要卡路里的計算方法:
[(10 × 體重) + (6.25 × 身高) - (5 × 年齡) - 161]*活動量,活動量為1.1-1.3不等。
代入體重51、身高165、年齡26,計算得卡路里需求範圍為:1375.3-1625.3。
這告訴我,在麥當勞吃上三餐,相當於攝入了正常兩天所需要的熱量。哎哎哎~管住嘴、邁開腿啊~~~
推薦閱讀: