1 Introduction

Data yang digunakan pada projek ini merupakan data Starbucks Coffee Company Beverage Nutrition Information yang bersumber dari TidyTuesday untuk LBB: Programming for Data Science.

2 Importing Data

Pada kesempatan kali ini untuk importing data menggunakan library readr.

library(readr)

Fungsi yang digunakan dari library readr adalah read_csv untuk mengimpor data dengan ekstensi CSV dari halaman github tidytuesday.

sbux <- readr::read_csv('https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-12-21/starbucks.csv')

3 Data Inspection

Setelah memasukan data ke dalam variabel sbux, pelru dilakukan pengecekan dari data set yang di import. Fungsi yang akan digunakan adalah head() untuk melihat 6 baris pertama dan tail() untuk melihat 6 baris terakhir.

head(sbux)
tail(sbux)

Kita dapat mengetahui informasi jumlah baris dan kolom dengan fungsi ncol() dan nrow().

ncol(sbux)
#> [1] 15
nrow(sbux)
#> [1] 1147

Selanjutnya perlu dilakukan pengecekan tipe data dari dataset tersebut menggunakan fungsi class() untuk satu kolom secara satu per satu.

class(sbux$product_name)
#> [1] "character"

untuk melihat struktur dataset secara keseluruhan dapat menggunakan fungsi str()

str(sbux)
#> spec_tbl_df [1,147 × 15] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
#>  $ product_name   : chr [1:1147] "brewed coffee - dark roast" "brewed coffee - dark roast" "brewed coffee - dark roast" "brewed coffee - dark roast" ...
#>  $ size           : chr [1:1147] "short" "tall" "grande" "venti" ...
#>  $ milk           : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ whip           : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ serv_size_m_l  : num [1:1147] 236 354 473 591 236 354 473 591 236 354 ...
#>  $ calories       : num [1:1147] 3 4 5 5 3 4 5 5 3 4 ...
#>  $ total_fat_g    : num [1:1147] 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ...
#>  $ saturated_fat_g: num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ trans_fat_g    : chr [1:1147] "0" "0" "0" "0" ...
#>  $ cholesterol_mg : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ sodium_mg      : num [1:1147] 5 10 10 10 5 10 10 10 5 5 ...
#>  $ total_carbs_g  : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ fiber_g        : chr [1:1147] "0" "0" "0" "0" ...
#>  $ sugar_g        : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ caffeine_mg    : num [1:1147] 130 193 260 340 15 20 25 30 155 235 ...
#>  - attr(*, "spec")=
#>   .. cols(
#>   ..   product_name = col_character(),
#>   ..   size = col_character(),
#>   ..   milk = col_double(),
#>   ..   whip = col_double(),
#>   ..   serv_size_m_l = col_double(),
#>   ..   calories = col_double(),
#>   ..   total_fat_g = col_double(),
#>   ..   saturated_fat_g = col_double(),
#>   ..   trans_fat_g = col_character(),
#>   ..   cholesterol_mg = col_double(),
#>   ..   sodium_mg = col_double(),
#>   ..   total_carbs_g = col_double(),
#>   ..   fiber_g = col_character(),
#>   ..   sugar_g = col_double(),
#>   ..   caffeine_mg = col_double()
#>   .. )
#>  - attr(*, "problems")=<externalptr>

Deskripsi Kolom:

  • product_name : Nama Produk
  • size : Ukuran Minuman (short, tall, grande, venti, dll)
  • milk : Tipe susu yang digunakan
  • whip : Menggunakan whip cream atau tidak (biner 0/1)
  • serv_size_m_l : Ukuran minuman (ml)
  • calories : Total kalori (Kcal)
  • total_fat_g : Total fat (gr)
  • saturated_fat_g : Total Saturated fat (gr)
  • trans_fat_g : Trans fat (gr)
  • cholesterol_mg : Cholesterol (mg)
  • sodium_mg : Sodium (gr)
  • total_carbs_g : Total karbohidrat (gr)
  • fiber_g : Fiber (gr)
  • sugar_g : Gula (gr)
  • caffeine_mg : Kafein (mg)

Tidak lupa juga kita harus mengecek apakah dataset ini memiliki null value atau tidak menggunakan gabungan fungsi is.na() dan colSums()

colSums(is.na(sbux))
#>    product_name            size            milk            whip   serv_size_m_l 
#>               0               0               0               0               0 
#>        calories     total_fat_g saturated_fat_g     trans_fat_g  cholesterol_mg 
#>               0               0               0               0               0 
#>       sodium_mg   total_carbs_g         fiber_g         sugar_g     caffeine_mg 
#>               0               0               0               0               0

Dari beberapa fungsi yang sudah digunakan pada sebelumnya kita dapat mengetahui informasi-informasi terkait dataset sbux sebagai berikut:

  1. Berdasarkan fungsi nrow() dan ncol() dataset sbux memiliki jumlah baris sebanyak 1147 baris dan 15 kolom.

  2. Dari deskripsi kolom dan hasil fungsi str() kita dapat menentukan kolom mana perlu di rubah tipe data nya. Kolom yang perlu dilakukan perubahan tipe data sebagai berikut:

    • product_name dari character -> factor dikarenakan berisi data kategori
    • size dari character -> factor dikarenakan berisi data ketegori
    • milk dari double -> factor pada kolom ini berisi informasi menggunakan tipe susu yang digunakan dalam bentuk angka
    • whip dari double -> factorhanya berisi informasi 0 jika tidak menggunakan whip cream dan 1 jika menggunakan whip cream
    • trans_fat_g dari character -> numeric karena berisi informasi jumlah dari trans fat
    • fiber_g dari character -> numeric karena berisi informasi jumlah dari fiber
  3. Dataset sbux tidak memiliki null value jika dilihat dari hasil fungsi is.na() dan colSums()

4 Data Transformation

Pada tahap data inspection kita menemukan beberapa hal atau perubahan terkait dataset sbux sebelum dilakukan analisa lebih lanjut terhadap data ini.

4.1 Text Formatting

Kolom product_name akan dilakukan format ulang dalam penulisan character untuk memudahkan kita kedepannya ketika ingin melakukan pengelompokan untuk kolom category. Disini akan menggunakan library baru yaitu stringr

library(stringr)

berikut adalah format penulisan yang lama:

head(sbux$product_name)
#> [1] "brewed coffee - dark roast"            
#> [2] "brewed coffee - dark roast"            
#> [3] "brewed coffee - dark roast"            
#> [4] "brewed coffee - dark roast"            
#> [5] "brewed coffee - decaf pike place roast"
#> [6] "brewed coffee - decaf pike place roast"

Kita akan merubah semua value pada kolom product_name menjadi proper case menggunakan fungsi str_to_title()

sbux$product_name <- str_to_title(sbux$product_name)
head(sbux$product_name)
#> [1] "Brewed Coffee - Dark Roast"            
#> [2] "Brewed Coffee - Dark Roast"            
#> [3] "Brewed Coffee - Dark Roast"            
#> [4] "Brewed Coffee - Dark Roast"            
#> [5] "Brewed Coffee - Decaf Pike Place Roast"
#> [6] "Brewed Coffee - Decaf Pike Place Roast"

4.2 Replace Value

unique(sbux$milk)
#> [1] 0 1 2 5 3 4
unique(sbux$whip)
#> [1] 0 1

Nilai pada kolom milk ini memiliki arti sebagai berikut:

  • 0 adalah none
  • 1 adalah nonfat
  • 2 adalah 2%
  • 3 adalah soy
  • 4 adalah coconut
  • 5 adalah whole

sedangkan pada kolom whip memiliki arti:

  • 0 adalah without whip cream
  • 1 adalah with whip cream

Maka dari itu kita akan mengganti dari data berupa angka menjadi tipe susu yang digunakan menggunakan fungsi `replace``

sbux$milk <- sbux$milk %>% 
              replace(sbux$milk == 0, 'none') %>% 
              replace(sbux$milk == 1, 'nonfat') %>%
              replace(sbux$milk == 2, '2%') %>%
              replace(sbux$milk == 3, 'soy') %>%
              replace(sbux$milk == 4, 'coconut') %>%
              replace(sbux$milk == 5, 'whole') 

sbux$whip <- sbux$whip %>% 
              replace(sbux$whip == 0, 'without whip cream') %>% 
              replace(sbux$whip == 1, 'with whip cream')

Berikut adalah hasil setelah dilakukan replace() pada kolom milk dan whip

unique(sbux$milk)
#> [1] "none"    "nonfat"  "2%"      "whole"   "soy"     "coconut"
unique(sbux$whip)
#> [1] "without whip cream" "with whip cream"

4.3 Create Category Column

Pada tahap ini kita akan melakukan pengelompokan manual berdasarkan data mentah berupa PDF maka dari itu kita akan membuat list dari tiap category yang ingin kita buat

List product_name untuk kategori Coffee

cat_coffee <- c('Brewed Coffee - Dark Roast', 
                        'Brewed Coffee Traveler - Dark Roast',
                        'Brewed Coffee - Decaf Pike Place Roast',
                        'Brewed Coffee - Medium Roast',
                        'Brewed Coffee Traveler - Decaf Pike Place Roast',
                        'Brewed Coffee Traveler - Medium Roast',
                        'Brewed Coffee - True North Blend Blonde Roast',
                        'Brewed Coffee Traveler - True North Blend Blonde Roast',
                        'Caffè Misto',
                        'Clover Brewed Coffee - Dark Roast',
                        'Clover Brewed Coffee - Light Roast',
                        "Clover Brewed Coffee - Light Roast",
                        'Clover Brewed Coffee - Medium Roast',
                        'Iced Coffee',
                        'Iced Coffee With Milk',
                        'Cold Brewed Coffee',
                        'Vanilla Sweet Cream Cold Brew')

List product_name untuk kategori Espresso

cat_espresso <- c('Caffè Americano',
                  'Iced Caffè Americano',
                  'Caffè Latte',
                  'Iced Caffè Latte',
                  'Caffè Mocha',
                  'Iced Caffè Mocha',
                  'Cappuccino',
                  'Caramel Macchiato',
                  'Iced Caramel Macchiato',
                  'Cinnamon Dolce Latte',
                  'Espresso',
                  'Iced Espresso',
                  'Espresso Con Panna',
                  'Espresso Macchiato',
                  'Flat White',
                  'Latte Macchiato',
                  'Skinny Cinnamon Dolce Latte',
                  'Iced Skinny Cinnamon Dolce Latte',
                  'Skinny Mocha',
                  'Iced Skinny Mocha',
                  'Starbucks Doubleshot On Ice',
                  'White Chocolate Mocha',
                  'Iced White Chocolate Mocha',
                  'Espresso - Caffè Americano',
                  'Espresso - Iced Caffè Americano')

List product_name untuk kategori Tea

cat_tea <- c('Iced Black Tea',
             'Iced Black Tea Lemonade',
             'Chai Tea Latte',
             'Iced Chai Tea Latte',
             'Earl Grey Brewed Tea',
             "Emperor's Clouds And Mist Brewed Tea",
             'English Breakfast Black Brewed Tea',
             'English Breakfast Black Tea Latte',
             'Green Tea Latte',
             'Iced Green Tea Latte',
             'Iced Green Tea',
             'Iced Green Tea Lemonade',
             'Jade Citrus Mint Brewed Tea',
             'London Fog Tea Latte',
             'Iced Mango Black Tea',
             'Iced Mango Black Tea Lemonade',
             'Mint Majesty Brewed Tea',
             'Oprah Chai Herbal Brewed Tea',
             'Oprah Cinnamon Chai Brewed Tea',
             'Oprah Cinnamon Chai Latte',
             'Iced Oprah Cinnamon Chai Latte',
             'Passion Tango Brewed Tea',
             'Iced Passion Tango tea',
             'Iced Passion Tango Tea Lemonade',
             'Peach Iced Green Tea',
             'Peach Iced Green Tea Lemonade',
             'Peach Tranquility Brewed Tea',
             'Youthberry Brewed Tea',
             "Iced Passion Tango Tea")

List product_name untuk kategori Refresher

cat_refresher <- c('Cool Lime Starbucks Refreshers',
                   'Very Berry Hibiscus Starbucks Refreshers')

List product_name untuk kategori Smoothies

cat_smoothies <- c('Chocolate Smoothie',
                   'Orange Mango Smoothie',
                   'Strawberry Smoothie')

List product_name untuk kategori Frappuccino Blended Coffee

cat_frappuccino_blended_coffee <- c('Caffè Vanilla Frappuccino Blended',
                     'Caramel Frappuccino Blended',
                     'Coffee Frappuccino Blended',
                     'Espresso Frappuccino Blended',
                     'Java Chip Frappuccino Blended',
                     'Mocha Frappuccino Blended')

List product_name untuk kategori Frappuccino Light Blended Coffee

cat_frappuccino_light_blended_coffee <-  c('Caffè Vanilla Frappuccino Light',
                                           'Caramel Frappuccino Light',
                                           'Coffee Frappuccino Light',
                                           'Espresso Frappuccino Light',
                                           'Java Chip Light Frappuccino',
                                           'Mocha Light Frappuccino')

List product_name untuk kategori Frappuccino Blended Crème

cat_frappucino_blended_crème <- c('Blended Strawberry Lemonade',
                                  'Chai Crème Frappuccino Blended',
                                  'Double Chocolaty Chip Crème Frappuccino Blended',
                                  'Green Tea Crème Frappuccino Blended',
                                  'Oprah Cinnamon Chai Crème Frappuccino Blended',
                                  'Strawberries & Crème Frappuccino Blended',
                                  'Vanilla Bean Crème Frappuccino Blended')

List product_name untuk kategori Hot Chocolate & Other

cat_hot_chocolate_other <- c('Caramel Apple Spice',
                             'Hot Chocolate',
                             'Lemonade',
                             'Milk',
                             'Skinny Hot Chocolate',
                             'White Hot Chocolate')

List product_name untuk kategori Add-Ons

cat_add_ons <- c('Protein & Fibre Powder',
                 'Matcha Green Tea Powder',
                 'Espresso Shot')

Untuk mempermudah dalam pembuatan kolom kita akan menggunakan library dplyr

library(dplyr)

Keuntungan dalam penggunaan library dplyr adalah kita bisa menggunakan piping (%>%) yang akan di kombinasikan dengan fungsi mutate()

sbux <- sbux %>%
  dplyr::mutate(category = case_when(
    product_name %in% cat_coffee ~ 'Coffee',
    product_name %in% cat_espresso ~ 'Espresso',
    product_name %in% cat_tea ~ 'Tea',
    product_name %in% cat_refresher ~ 'Refersher',
    product_name %in% cat_smoothies ~ 'Smoothies',
    product_name %in% cat_frappuccino_blended_coffee ~ 'Frappuccino Blended Coffee',
    product_name %in% cat_frappuccino_light_blended_coffee ~ 'Frappuccino Light Blended Coffee',
    product_name %in% cat_frappucino_blended_crème ~ 'Frappucino Blended Crème',
    product_name %in% cat_hot_chocolate_other ~ 'Hot Chocolate & Other',
    product_name %in% cat_add_ons ~ 'Add-Ons'))

Selanjutnya adalah melakukan pengecekan kembali apakah di kolom category yang baru saja dibuat sudah terisi semua dengan menggunakaan fungsi sum() dan is.na()

sum(is.na(sbux$category))
#> [1] 4

Melakukan subsetting untuk 4 baris yang masih mengandung null value

sbux[is.na(sbux$category),]

Dikarenakan produk Clover Brewed Coffee - Light Roast termasuk kategori Coffee maka kita akan mengisi 4 baris tersebut dengan kategori tersebut.

sbux$category[is.na(sbux$category)] = 'Coffee'

Dilakukan pengecekan kembali apakah sudah terisi semua

sum(is.na(sbux$category))
#> [1] 0

Langkah terakhir adalah pengecekan secara keseluruhan dataset menggunakan fungsi str() kembali untuk melihat apakah sudah sesuai transformasi data yang kita ingin kan

str(sbux)
#> tibble [1,147 × 16] (S3: tbl_df/tbl/data.frame)
#>  $ product_name   : chr [1:1147] "Brewed Coffee - Dark Roast" "Brewed Coffee - Dark Roast" "Brewed Coffee - Dark Roast" "Brewed Coffee - Dark Roast" ...
#>  $ size           : chr [1:1147] "short" "tall" "grande" "venti" ...
#>  $ milk           : chr [1:1147] "none" "none" "none" "none" ...
#>  $ whip           : chr [1:1147] "without whip cream" "without whip cream" "without whip cream" "without whip cream" ...
#>  $ serv_size_m_l  : num [1:1147] 236 354 473 591 236 354 473 591 236 354 ...
#>  $ calories       : num [1:1147] 3 4 5 5 3 4 5 5 3 4 ...
#>  $ total_fat_g    : num [1:1147] 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ...
#>  $ saturated_fat_g: num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ trans_fat_g    : chr [1:1147] "0" "0" "0" "0" ...
#>  $ cholesterol_mg : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ sodium_mg      : num [1:1147] 5 10 10 10 5 10 10 10 5 5 ...
#>  $ total_carbs_g  : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ fiber_g        : chr [1:1147] "0" "0" "0" "0" ...
#>  $ sugar_g        : num [1:1147] 0 0 0 0 0 0 0 0 0 0 ...
#>  $ caffeine_mg    : num [1:1147] 130 193 260 340 15 20 25 30 155 235 ...
#>  $ category       : chr [1:1147] "Coffee" "Coffee" "Coffee" "Coffee" ...

Menggunakan fungsi dim() untuk melihat jumlah baris dan kolom

dim(sbux)
#> [1] 1147   16

Dapat dilihat bahwa kita sudah berhasil menambahkan 1 kolom category

4.4 Change Data Type

Sebelum kita melakukan perubahan tipe data lebih baiknya kita memeriksa tipe data sebelum dilakukan perubahan dengan class()

class(sbux$product_name) 
#> [1] "character"
class(sbux$size) 
#> [1] "character"
class(sbux$milk) 
#> [1] "character"
class(sbux$whip) 
#> [1] "character"
class(sbux$trans_fat_g) 
#> [1] "character"
class(sbux$fiber_g)
#> [1] "character"
class(sbux$category)
#> [1] "character"

Untuk melakukan perubahan tipe data kita akan meggunakan fungsi as.factor() dan as.numeric() untuk kolom berikut:

  • product_name dari character -> factor
  • size dari character -> factor
  • milk dari double -> factor
  • whip dari double -> factor
  • trans_fat_g dari character -> numeric
  • fiber_g dari character -> numeric
  • category dari character -> factor
sbux$product_name <-  as.factor(sbux$product_name)
sbux$size <-  as.factor(sbux$size)
sbux$milk <-  as.factor(sbux$milk)
sbux$whip <-  as.factor(sbux$whip)
sbux$trans_fat_g <-  as.numeric(sbux$trans_fat_g)
sbux$fiber_g <-  as.numeric(sbux$fiber_g)
sbux$category <-  as.factor(sbux$category)

Kita dapat melihat apakah sudah terubah dengan benar menggunakan class() kembali

class(sbux$product_name) 
#> [1] "factor"
class(sbux$size) 
#> [1] "factor"
class(sbux$milk) 
#> [1] "factor"
class(sbux$whip) 
#> [1] "factor"
class(sbux$trans_fat_g) 
#> [1] "numeric"
class(sbux$fiber_g)
#> [1] "numeric"
class(sbux$category)
#> [1] "factor"

5 Insight

Pada bagian ini kita akan mencoba mencari insight-insight dari dataset sbux, kita dapat menggunakan fungsi summary() untuk menampilkan five-number summary

summary(sbux)
#>                 product_name      size          milk    
#>  Iced Caffè Mocha     : 60   grande :334   2%     :190  
#>  Caffè Mocha          : 40   venti  :320   coconut:190  
#>  Cinnamon Dolce Latte : 40   tall   :318   none   :165  
#>  Hot Chocolate        : 40   short  :123   nonfat :222  
#>  White Chocolate Mocha: 40   trenta : 21   soy    :190  
#>  White Hot Chocolate  : 40   doppio :  7   whole  :190  
#>  (Other)              :887   (Other): 24                
#>                  whip     serv_size_m_l      calories      total_fat_g    
#>  with whip cream   :283   Min.   :  0.0   Min.   :  0.0   Min.   : 0.000  
#>  without whip cream:864   1st Qu.:354.0   1st Qu.:130.0   1st Qu.: 1.000  
#>                           Median :473.0   Median :220.0   Median : 4.500  
#>                           Mean   :461.3   Mean   :228.4   Mean   : 6.186  
#>                           3rd Qu.:591.0   3rd Qu.:320.0   3rd Qu.:10.000  
#>                           Max.   :887.0   Max.   :640.0   Max.   :28.000  
#>                                                                           
#>  saturated_fat_g   trans_fat_g     cholesterol_mg    sodium_mg    
#>  Min.   : 0.000   Min.   :0.0000   Min.   : 0.00   Min.   :  0.0  
#>  1st Qu.: 0.200   1st Qu.:0.0000   1st Qu.: 0.00   1st Qu.: 70.0  
#>  Median : 2.500   Median :0.0000   Median : 5.00   Median :135.0  
#>  Mean   : 3.881   Mean   :0.1212   Mean   :15.24   Mean   :139.7  
#>  3rd Qu.: 7.000   3rd Qu.:0.2000   3rd Qu.:30.00   3rd Qu.:200.0  
#>  Max.   :20.000   Max.   :2.0000   Max.   :75.00   Max.   :370.0  
#>                                                                   
#>  total_carbs_g      fiber_g          sugar_g       caffeine_mg    
#>  Min.   : 0.00   Min.   :0.0000   Min.   : 0.00   Min.   :  0.00  
#>  1st Qu.:20.00   1st Qu.:0.0000   1st Qu.:18.00   1st Qu.: 30.00  
#>  Median :37.00   Median :0.0000   Median :34.00   Median : 75.00  
#>  Mean   :37.72   Mean   :0.8657   Mean   :34.99   Mean   : 91.86  
#>  3rd Qu.:53.00   3rd Qu.:1.0000   3rd Qu.:49.00   3rd Qu.:150.00  
#>  Max.   :96.00   Max.   :9.0000   Max.   :89.00   Max.   :475.00  
#>                                                                   
#>                        category  
#>  Espresso                  :399  
#>  Tea                       :225  
#>  Frappucino Blended Crème  :183  
#>  Frappuccino Blended Coffee:120  
#>  Hot Chocolate & Other     : 96  
#>  Coffee                    : 80  
#>  (Other)                   : 44

5.1 Berapakah jumlah menu (product_name) yang akan di analisa pada dataset sbux?

Dikarenakan pada kolom product_name terdapat perulangan maka kita akan menggunakan fungsi unique() untuk menghasilkan list value yang unique, selanjutkan akan menggunakan length() untuk menghitung jumlah/panjang dari list tersebut.

length(unique(sbux$product_name))
#> [1] 93

Jawaban : Jumlah menu pada di dataset ini sejumlah 93 menu

5.2 Kategori mana yang memiliki paling banyak kombinasi menu?

Untuk melihat jumlah/frekuensi kita akan menggunakan fungsi table()

table(sbux$category)
#> 
#>                          Add-Ons                           Coffee 
#>                                3                               80 
#>                         Espresso       Frappuccino Blended Coffee 
#>                              399                              120 
#> Frappuccino Light Blended Coffee         Frappucino Blended Crème 
#>                               18                              183 
#>            Hot Chocolate & Other                        Refersher 
#>                               96                                8 
#>                        Smoothies                              Tea 
#>                               15                              225

Jawaban : Kategori Espresso dengan jumlah 399 kombinasi

5.3 Produk mana yang memiliki kalori paling banyak ?

Untuk menjawab pertanyaan ini kita akan melakukan conditional subsetting dengan memasukan nilai kalori tertinggi dari hasil fungsi summary() sebesar 640 kcal

sbux[sbux$calories == 640,]

Jawaban : Produk yang memiliki nilai kalori tertinggi sebesar 640 kcal adalah kombinasi White Hot Chocolate - Venti - Whole Milk - With Whip Cream

5.4 Produk mana yang memiliki kafein paling banyak ?

Sama dengan pertanyaan sebelumnya kita akan melakukan condtional subsetting, tetapi kita akan menggunakan fungsi tambahan max() untuk mendapatkan nilai maksimumnya

sbux[sbux$caffeine_mg == max(sbux$caffeine_mg),]

Jawaban : Produk yang memiliki nilai kafein tertinggi sebesar 475 mg adalah kombinasi Brewed Coffee: True North Blend Blonde Roast - Venti

5.5 Berapa jumlah kandungan gula pada tiap kategori?

Kita akan menggunakan fungsi xtabs() untuk menampilkan jumlah kandungan gula setiap kategori, selanjutnya akan menggunakan fungsi as.data.frame untuk merubah hasil dari fungsi xtabs menjadi data frame

Jawaban:

as.data.frame(xtabs(formula = sugar_g ~ category, data = sbux))

5.6 Berapakah rata-rata dari kandungan kalori tiap kategori?

Untuk mendapatkan jawaban tersebut akan lebih jika menggungakan fungsi aggregate()

Jawaban:

aggregate(formula = calories~category, data = sbux, FUN = 'mean')