數說:在麥當勞吃三餐是什麼樣的後果?

本文嘗試對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的總卡路里數

上述六種午餐組合的卡路里攝入分別為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<-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。

這告訴我,在麥當勞吃上三餐,相當於攝入了正常兩天所需要的熱量。哎哎哎~管住嘴、邁開腿啊~~~

推薦閱讀:

數據分析學習階段性總結及反思

TAG:数据分析 | R编程语言 | 大数据分析 |