data("PlantGrowth")
str(PlantGrowth)
## 'data.frame':    30 obs. of  2 variables:
##  $ weight: num  4.17 5.58 5.18 6.11 4.5 4.61 5.17 4.53 5.33 5.14 ...
##  $ group : Factor w/ 3 levels "ctrl","trt1",..: 1 1 1 1 1 1 1 1 1 1 ...
head(PlantGrowth)
##   weight group
## 1   4.17  ctrl
## 2   5.58  ctrl
## 3   5.18  ctrl
## 4   6.11  ctrl
## 5   4.50  ctrl
## 6   4.61  ctrl
options(repos = c(CRAN = "https://cloud.r-project.org"))


install.packages("dplyr")
## 
## The downloaded binary packages are in
##  /var/folders/4f/3vyg_79j1b393c9jcqgz4f7c0000gn/T//Rtmpldb3MR/downloaded_packages
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
PlantGrowth %>%
  group_by(group) %>%
  summarise(avg_weight = mean(weight), .groups = "drop")
## # A tibble: 3 × 2
##   group avg_weight
##   <fct>      <dbl>
## 1 ctrl        5.03
## 2 trt1        4.66
## 3 trt2        5.53
PlantGrowth %>%
  arrange(desc(weight))
##    weight group
## 1    6.31  trt2
## 2    6.15  trt2
## 3    6.11  ctrl
## 4    6.03  trt1
## 5    5.87  trt1
## 6    5.80  trt2
## 7    5.58  ctrl
## 8    5.54  trt2
## 9    5.50  trt2
## 10   5.37  trt2
## 11   5.33  ctrl
## 12   5.29  trt2
## 13   5.26  trt2
## 14   5.18  ctrl
## 15   5.17  ctrl
## 16   5.14  ctrl
## 17   5.12  trt2
## 18   4.92  trt2
## 19   4.89  trt1
## 20   4.81  trt1
## 21   4.69  trt1
## 22   4.61  ctrl
## 23   4.53  ctrl
## 24   4.50  ctrl
## 25   4.41  trt1
## 26   4.32  trt1
## 27   4.17  ctrl
## 28   4.17  trt1
## 29   3.83  trt1
## 30   3.59  trt1
PlantGrowth %>%
  filter(weight > 5)
##    weight group
## 1    5.58  ctrl
## 2    5.18  ctrl
## 3    6.11  ctrl
## 4    5.17  ctrl
## 5    5.33  ctrl
## 6    5.14  ctrl
## 7    5.87  trt1
## 8    6.03  trt1
## 9    6.31  trt2
## 10   5.12  trt2
## 11   5.54  trt2
## 12   5.50  trt2
## 13   5.37  trt2
## 14   5.29  trt2
## 15   6.15  trt2
## 16   5.80  trt2
## 17   5.26  trt2
PlantGrowth %>%
  mutate(weight_category = ifelse(weight > mean(weight), "Above Average", "Below Average"))
##    weight group weight_category
## 1    4.17  ctrl   Below Average
## 2    5.58  ctrl   Above Average
## 3    5.18  ctrl   Above Average
## 4    6.11  ctrl   Above Average
## 5    4.50  ctrl   Below Average
## 6    4.61  ctrl   Below Average
## 7    5.17  ctrl   Above Average
## 8    4.53  ctrl   Below Average
## 9    5.33  ctrl   Above Average
## 10   5.14  ctrl   Above Average
## 11   4.81  trt1   Below Average
## 12   4.17  trt1   Below Average
## 13   4.41  trt1   Below Average
## 14   3.59  trt1   Below Average
## 15   5.87  trt1   Above Average
## 16   3.83  trt1   Below Average
## 17   6.03  trt1   Above Average
## 18   4.89  trt1   Below Average
## 19   4.32  trt1   Below Average
## 20   4.69  trt1   Below Average
## 21   6.31  trt2   Above Average
## 22   5.12  trt2   Above Average
## 23   5.54  trt2   Above Average
## 24   5.50  trt2   Above Average
## 25   5.37  trt2   Above Average
## 26   5.29  trt2   Above Average
## 27   4.92  trt2   Below Average
## 28   6.15  trt2   Above Average
## 29   5.80  trt2   Above Average
## 30   5.26  trt2   Above Average
PlantGrowth %>%
  select(weight)
##    weight
## 1    4.17
## 2    5.58
## 3    5.18
## 4    6.11
## 5    4.50
## 6    4.61
## 7    5.17
## 8    4.53
## 9    5.33
## 10   5.14
## 11   4.81
## 12   4.17
## 13   4.41
## 14   3.59
## 15   5.87
## 16   3.83
## 17   6.03
## 18   4.89
## 19   4.32
## 20   4.69
## 21   6.31
## 22   5.12
## 23   5.54
## 24   5.50
## 25   5.37
## 26   5.29
## 27   4.92
## 28   6.15
## 29   5.80
## 30   5.26
PlantGrowth %>%
  filter(weight > 5) %>%
  arrange(group)
##    weight group
## 1    5.58  ctrl
## 2    5.18  ctrl
## 3    6.11  ctrl
## 4    5.17  ctrl
## 5    5.33  ctrl
## 6    5.14  ctrl
## 7    5.87  trt1
## 8    6.03  trt1
## 9    6.31  trt2
## 10   5.12  trt2
## 11   5.54  trt2
## 12   5.50  trt2
## 13   5.37  trt2
## 14   5.29  trt2
## 15   6.15  trt2
## 16   5.80  trt2
## 17   5.26  trt2