library(datasets)
data(ChickWeight)
View(ChickWeight)
head(ChickWeight)
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1
class(ChickWeight)
## [1] "nfnGroupedData" "nfGroupedData"  "groupedData"    "data.frame"
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union

Data Summarize

summary(ChickWeight)
##      weight           Time           Chick     Diet   
##  Min.   : 35.0   Min.   : 0.00   13     : 12   1:220  
##  1st Qu.: 63.0   1st Qu.: 4.00   9      : 12   2:120  
##  Median :103.0   Median :10.00   20     : 12   3:120  
##  Mean   :121.8   Mean   :10.72   10     : 12   4:118  
##  3rd Qu.:163.8   3rd Qu.:16.00   17     : 12          
##  Max.   :373.0   Max.   :21.00   19     : 12          
##                                  (Other):506

Summary berdasarkan jenis diet yang diberikan

summary_diet <- ChickWeight %>%
  group_by(Diet) %>%
  summarize(
    Total = sum(weight),
    Mean = mean(weight),
    Median = median(weight),
    Max = max(weight),
    Min = min(weight)
  )

print(summary_diet)
## # A tibble: 4 × 6
##   Diet  Total  Mean Median   Max   Min
##   <fct> <dbl> <dbl>  <dbl> <dbl> <dbl>
## 1 1     22582  103.    88    305    35
## 2 2     14714  123.   104.   331    39
## 3 3     17154  143.   126.   373    39
## 4 4     15961  135.   130.   322    39

Summary berdasarkan waktu (Time)

summary_time <- ChickWeight %>%
  group_by(Time) %>%
  summarise(
    Avg_Weight = mean(weight),
    Max_Weight = max(weight),
    Min_Weight = min(weight),
    Count = n()
  )

print(summary_time)
## # A tibble: 12 × 5
##     Time Avg_Weight Max_Weight Min_Weight Count
##    <dbl>      <dbl>      <dbl>      <dbl> <int>
##  1     0       41.1         43         39    50
##  2     2       49.2         55         35    50
##  3     4       60.0         69         48    49
##  4     6       74.3         96         51    49
##  5     8       91.2        131         57    49
##  6    10      108.         163         51    49
##  7    12      129.         217         54    49
##  8    14      144.         240         68    48
##  9    16      168.         287         71    47
## 10    18      190.         332         72    47
## 11    20      210.         361         76    46
## 12    21      219.         373         74    45

Summary berdasarkan Diet dan waktu (Time)

summary_diet_time <- ChickWeight %>%
  group_by(Diet, Time) %>%
  summarise(
    Avg_Weight = mean(weight),
    Count = n()
  )
## `summarise()` has grouped output by 'Diet'. You can override using the
## `.groups` argument.
print(summary_diet_time)
## # A tibble: 48 × 4
## # Groups:   Diet [4]
##    Diet   Time Avg_Weight Count
##    <fct> <dbl>      <dbl> <int>
##  1 1         0       41.4    20
##  2 1         2       47.2    20
##  3 1         4       56.5    19
##  4 1         6       66.8    19
##  5 1         8       79.7    19
##  6 1        10       93.1    19
##  7 1        12      109.     19
##  8 1        14      123.     18
##  9 1        16      145.     17
## 10 1        18      159.     17
## # ℹ 38 more rows

Data Arranging

Mengurutkan berdasarkan peubah weight dari nilai terkecil

head(ChickWeight %>% arrange(weight))
##   weight Time Chick Diet
## 1     35    2    18    1
## 2     39    2     3    1
## 3     39    0    18    1
## 4     39    0    27    2
## 5     39    0    28    2
## 6     39    0    29    2

Mengurutkan berdasarkan peubah weight dari nilai terbesar

head(ChickWeight %>% arrange(desc(weight)))
##   weight Time Chick Diet
## 1    373   21    35    3
## 2    361   20    35    3
## 3    341   21    34    3
## 4    332   18    35    3
## 5    331   21    21    2
## 6    327   20    34    3

Mengurutkan berdasarkan peubah Diet dari nilai terkecil dan weight dari nilai terbesar

head(ChickWeight %>% arrange(Diet, desc(weight)))
##   weight Time Chick Diet
## 1    305   21     7    1
## 2    288   20     7    1
## 3    266   21    14    1
## 4    259   20    14    1
## 5    250   18     7    1
## 6    248   18    14    1

Data Filtering

Mengambil chick dengan weight kurang dari 100

filtered_chick <- filter(ChickWeight, weight < 100)
head(filtered_chick)
##   weight Time Chick Diet
## 1     42    0     1    1
## 2     51    2     1    1
## 3     59    4     1    1
## 4     64    6     1    1
## 5     76    8     1    1
## 6     93   10     1    1

Mengambil data chick dari jenis diet sama dengan 3 dan waktu (Time) sama dengan 8

filtered_chick2 <- ChickWeight %>%
  filter(Diet == 3, Time == 8)

head(filtered_chick2)
##   weight Time Chick Diet
## 1     85    8    31    3
## 2    107    8    32    3
## 3     96    8    33    3
## 4    107    8    34    3
## 5    123    8    35    3
## 6     98    8    36    3

Data Mutate

Menambah kolom baru yang menghitung berat dalam kilogram (dengan asumsi kolom weight dalam satuan gram)

mutated_weight <- ChickWeight %>%
  mutate(weight_kg = weight / 1000)

head(mutated_weight)
##   weight Time Chick Diet weight_kg
## 1     42    0     1    1     0.042
## 2     51    2     1    1     0.051
## 3     59    4     1    1     0.059
## 4     64    6     1    1     0.064
## 5     76    8     1    1     0.076
## 6     93   10     1    1     0.093

Data Select

Mengambil kolom weight dan Time

head(ChickWeight %>% select(weight, Time))
##   weight Time
## 1     42    0
## 2     51    2
## 3     59    4
## 4     64    6
## 5     76    8
## 6     93   10
head(ChickWeight %>% select(-Chick, -Diet))
##   weight Time
## 1     42    0
## 2     51    2
## 3     59    4
## 4     64    6
## 5     76    8
## 6     93   10

Penggunaan 2 Fungsi Secara Bersamaan

Filter dan Arrange

Menyaring data ChickWeight dengan weight lebih besar dari 300 gram, lalu mengurutkan hasilnya berdasarkan Diet secara descending

result1 <- ChickWeight %>%
  filter(weight > 300) %>%
  arrange(desc(Diet))
result1
##    weight Time Chick Diet
## 1     303   20    48    4
## 2     322   21    48    4
## 3     305   21    32    3
## 4     327   20    34    3
## 5     341   21    34    3
## 6     332   18    35    3
## 7     361   20    35    3
## 8     373   21    35    3
## 9     321   21    40    3
## 10    307   18    21    2
## 11    318   20    21    2
## 12    331   21    21    2
## 13    309   21    29    2
## 14    305   21     7    1