Module 8 code and images

Code and results thereof for Module 08, which uses data from a pharmacological study.

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
library(ggplot2)
theoph = read.csv("theoph.csv")
str(theoph)
theoph$Subject = factor(theoph$Subject)

Using select() make a new data frame containing only the subject ID, the Time and conc variables:

theoph_1 = select(theoph, Subject, Time, conc)
head(theoph_1)
##   Subject Time  conc
## 1       1 0.00  0.74
## 2       1 0.25  2.84
## 3       1 0.57  6.57
## 4       1 1.12 10.50
## 5       1 2.02  9.66
## 6       1 3.82  8.58

Using a combination of select() and distinct() make a new data frame containing a single row for each subject with the subject ID, their weight and the dose:

subject_info <- theoph %>%
  select(Subject, Wt, Dose) %>%
  distinct()
head(subject_info)
##   Subject   Wt Dose
## 1       1 79.6 4.02
## 2       2 72.4 4.40
## 3       3 70.5 4.53
## 4       4 72.7 4.40
## 5       5 54.6 5.86
## 6       6 80.0 4.00

Using filter() make a new data frame containing only the first subject:

filter(theoph, Subject == "1")
##    Subject   Wt Dose  Time  conc
## 1        1 79.6 4.02  0.00  0.74
## 2        1 79.6 4.02  0.25  2.84
## 3        1 79.6 4.02  0.57  6.57
## 4        1 79.6 4.02  1.12 10.50
## 5        1 79.6 4.02  2.02  9.66
## 6        1 79.6 4.02  3.82  8.58
## 7        1 79.6 4.02  5.10  8.36
## 8        1 79.6 4.02  7.03  7.47
## 9        1 79.6 4.02  9.05  6.89
## 10       1 79.6 4.02 12.12  5.94
## 11       1 79.6 4.02 24.37  3.28

Using filter() make a new data frame containing only the first four subjects:

theoph_1to4 <- theoph %>%
  filter(Subject %in% c("1", "2", "3", "4"))
theoph_1to4
##    Subject   Wt Dose  Time  conc
## 1        1 79.6 4.02  0.00  0.74
## 2        1 79.6 4.02  0.25  2.84
## 3        1 79.6 4.02  0.57  6.57
## 4        1 79.6 4.02  1.12 10.50
## 5        1 79.6 4.02  2.02  9.66
## 6        1 79.6 4.02  3.82  8.58
## 7        1 79.6 4.02  5.10  8.36
## 8        1 79.6 4.02  7.03  7.47
## 9        1 79.6 4.02  9.05  6.89
## 10       1 79.6 4.02 12.12  5.94
## 11       1 79.6 4.02 24.37  3.28
## 12       2 72.4 4.40  0.00  0.00
## 13       2 72.4 4.40  0.27  1.72
## 14       2 72.4 4.40  0.52  7.91
## 15       2 72.4 4.40  1.00  8.31
## 16       2 72.4 4.40  1.92  8.33
## 17       2 72.4 4.40  3.50  6.85
## 18       2 72.4 4.40  5.02  6.08
## 19       2 72.4 4.40  7.03  5.40
## 20       2 72.4 4.40  9.00  4.55
## 21       2 72.4 4.40 12.00  3.01
## 22       2 72.4 4.40 24.30  0.90
## 23       3 70.5 4.53  0.00  0.00
## 24       3 70.5 4.53  0.27  4.40
## 25       3 70.5 4.53  0.58  6.90
## 26       3 70.5 4.53  1.02  8.20
## 27       3 70.5 4.53  2.02  7.80
## 28       3 70.5 4.53  3.62  7.50
## 29       3 70.5 4.53  5.08  6.20
## 30       3 70.5 4.53  7.07  5.30
## 31       3 70.5 4.53  9.00  4.90
## 32       3 70.5 4.53 12.15  3.70
## 33       3 70.5 4.53 24.17  1.05
## 34       4 72.7 4.40  0.00  0.00
## 35       4 72.7 4.40  0.35  1.89
## 36       4 72.7 4.40  0.60  4.60
## 37       4 72.7 4.40  1.07  8.60
## 38       4 72.7 4.40  2.13  8.38
## 39       4 72.7 4.40  3.50  7.54
## 40       4 72.7 4.40  5.02  6.88
## 41       4 72.7 4.40  7.02  5.78
## 42       4 72.7 4.40  9.02  5.33
## 43       4 72.7 4.40 11.98  4.19
## 44       4 72.7 4.40 24.65  1.15

Using group_by(), calculate the average concentration per subject (across all times):

theoph |>
    group_by(Subject) |>
    summarize(avgconc = mean(conc))
## # A tibble: 12 × 2
##    Subject avgconc
##    <fct>     <dbl>
##  1 1          6.44
##  2 2          4.82
##  3 3          5.09
##  4 4          4.94
##  5 5          5.78
##  6 6          3.53
##  7 7          3.91
##  8 8          4.27
##  9 9          4.89
## 10 10         5.93
## 11 11         4.51
## 12 12         5.41

Using filter() make a new data frame containing only the first subject and pipe this to ggplot() to make a line plot with Time on the x-axis and conc on the y-axis:

theoph |>
  filter(Subject == "1") |>
  ggplot(aes(x = Time, y = conc)) +
  geom_line() +
  ggtitle("Concentration vs. Time for Subject 1")

Using select() to extract just the Subject, Time and conc variables and pipe this to ggplot() to make a line plot with Time on the x-axis, conc on the y-axis and the lines colored by subject:

theoph$Subject = factor(theoph$Subject)
theoph |>
  select(Subject, Time, conc) |>
  ggplot(aes(x = Time, y = conc, col= theoph$Subject, group = Subject)) +
  geom_line() +
  ggtitle("Concentration vs. Time, All Subjects")

Using select() to extract just the Subject, Time and conc variables and pipe this to ggplot to make a line plot with Time on the x-axis, conc on the y-axis and faceted by the subject ID:

theoph$Subject = factor(theoph$Subject)
theoph |>
  select(Subject, Time, conc) |>
  ggplot(aes(x = Time, y = conc)) +
  geom_line() +
  geom_line(color = "blueviolet") +
  facet_wrap(~ Subject) +
  ggtitle("Concentration vs. Time Faceted by Subject ID")

That is all, thank you.