
本文嘗試對(duì)Kaggle中提供的一份“麥當(dāng)勞菜單中的各類食品的營(yíng)養(yǎng)成分表”進(jìn)行數(shù)據(jù)分析,初步回答頁面中的一個(gè)問題,并做一些延伸討論。
Inspiration
How many calories does the average McDonald's value meal contain?
平均下來,每頓麥當(dāng)勞大概含有多少卡路里?
1.導(dǎo)入數(shù)據(jù)
下載數(shù)據(jù)集,解壓后得到名為“menu”的.csv文件,腳本輸入代碼:
library(readr)
menu <- read_csv("C:/Users/Administrator/Desktop/menu.csv")
成功導(dǎo)入相應(yīng)數(shù)據(jù):

腳本輸入代碼:
menu #顯示數(shù)據(jù)
class(menu)#數(shù)據(jù)類型顯示
dim(menu)#查看變量的維數(shù)

由圖可知,本數(shù)據(jù)集是一個(gè)data.frame類型的對(duì)象,包含260條數(shù)據(jù)記錄、24個(gè)變量。
2.數(shù)據(jù)處理
本次數(shù)據(jù)分析的目標(biāo)是:計(jì)算平均每頓麥當(dāng)勞的卡路里數(shù)。對(duì)于以上問題,我們需要的變量應(yīng)該為:每種餐品對(duì)應(yīng)的卡路里數(shù)。
從表中目測(cè)可知,餐品類別有一下9組:Breakfast(早餐)、Beef & Pork(牛肉和豬肉)、Chicken & Fish(雞肉和魚)、Salads(沙拉)、Snacks & Sides(小吃和面包)、Desserts(甜點(diǎn))、Beverages(飲料)、Coffee & Tea(咖啡和茶)、Smoothies & Shakes(冰沙和奶昔)。因此,我們首先計(jì)算出每個(gè)類別的餐品所提供的卡路里數(shù):
腳本輸入代碼:
food<-menu
MCfood <- select(food,Category,Calories) #篩選變量列表
by_Category <- group_by(MCfood, Category) #將Category進(jìn)行分組
by_Category #顯示by_Category數(shù)據(jù)表
由上圖可知,數(shù)據(jù)表包含260條數(shù)據(jù)記錄、2個(gè)變量,按照category被分為9組。

3.數(shù)據(jù)計(jì)算
接著輸入代碼:
Category_sum <- summarise(by_Category, count = n(),#統(tǒng)計(jì)各分組的數(shù)量
mean_calories = mean(Calories, na.rm = TRUE))#計(jì)算每組平均卡路里數(shù)
Category_sum <- arrange(Category_sum , desc(mean_calories)) #按照卡路里數(shù)降序排列
Category_sum #顯示Category_sum 表數(shù)據(jù)
由表中可知,各分組的餐品的平均卡路里量。Breakfast(早餐)為526.6、Beef & Pork(牛肉和豬肉)為494.0、Chicken & Fish(雞肉和魚)為553.0、Salads(沙拉)為270.0、Snacks & Sides(小吃和面包)為245.8、Desserts(甜點(diǎn))為222.1、Beverages(飲料)為113.7、Coffee & Tea(咖啡和茶)為283.9、Smoothies & Shakes(冰沙和奶昔)為531.4。

由上述數(shù)據(jù),可以繪制出餐品熱量排名圖,腳本輸入代碼:
ggplot(Category_sum ,aes(x =reorder(Category,mean_calories),y = mean_calories))+
geom_bar(stat = "identity",fill = "#B4EEB4",colour = "#BFFFFF",width=0.68) #繪制柱形圖
按照本人的飲食習(xí)慣,選擇的午餐的搭配通常為肉類、主食、甜點(diǎn)、飲品。所以,固定主食和甜點(diǎn)不變,我可以選擇的剩余組合是Beef & Pork、Beverages;Beef & Pork、Coffee & Tea;Beef & Pork、Smoothies & Shakes;Chicken & Fish、Beverages;Chicken & Fish、Coffee & Tea;Chicken & Fish、Smoothies & Shakes,共計(jì)6種組合。分別計(jì)算各組合的卡路里量:
sum(245.8,222.1)#固定主食和甜點(diǎn)的卡路里數(shù)
sum1<-sum(245.8,222.1)
a<-sum(494.0,113.7,sum1)#加上Beef & Pork、Beverages的總卡路里數(shù)
b<-sum(494.0,283.9,sum1)#加上Beef & Pork、Coffee & Tea的總卡路里數(shù)
c<-sum(494.0,531.4,sum1)#加上Beef & Pork、Smoothies & Shakes的總卡路里數(shù)
d<-sum(553.0,113.7,sum1)#加上Chicken & Fish、Beverages的總卡路里數(shù)
e<-sum(553.0,283.9,sum1)#加上Chicken & Fish、Coffee & Tea的總卡路里數(shù)
f<-sum(553.0,531.4,sum1)#加上Chicken & Fish、Smoothies & Shakes的總卡路里數(shù)

上述六種午餐組合的卡路里攝入分別為1075.6、1245.8、1493.3、1134.6、1304.8、1552.3,由此可以計(jì)算出午餐平均攝入卡路里量。繼續(xù)輸入代碼:
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,共計(jì)6種組合。所以,只需將午餐卡路里平均攝入量減去甜點(diǎn)的222.1,即為晚餐平均卡路里攝入量。輸入代碼:
dinner=lunch-222.1
dinner
由圖可知,本人晚餐攝入卡路里為1078.967。

綜上所述,本人在麥當(dāng)勞早、中、晚餐的卡路里攝入量分別為526.6、1301.1、1079。平均每頓攝入卡路里數(shù)為:
meal_mean=c(526.6,lunch,dinner)
mean(meal_mean)
從圖可知,本人在麥當(dāng)勞平均每頓攝入卡路里為968.9?。。。。?!

meal_sum=sum(526.6,lunch,dinner)
meal_sum
從圖可知,本人在麥當(dāng)勞一天攝入平均卡路里為2906.6!?。。。?!

我因此從網(wǎng)上查詢了每日需要卡路里的計(jì)算方法:
[(10 × 體重) + (6.25 × 身高) - (5 × 年齡) - 161]*活動(dòng)量,活動(dòng)量為1.1-1.3不等。
代入體重51、身高165、年齡26,計(jì)算得卡路里需求范圍為:1375.3-1625.3。
這告訴我,在麥當(dāng)勞吃上三餐,相當(dāng)于攝入了正常兩天所需要的熱量。哎哎哎~管住嘴、邁開腿啊~~~