The packages are read into the markdown
library(ggplot2)
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
The data used for the exercises is from the theophylline pharmacokinetic study
theoph = read.csv("theoph.csv")
The subject IDs are converted into a factor
theoph$Subject = factor(theoph$Subject)
Use select() to make a new data frame containing only the subject ID, the Time and conc variables.
theoph_sel = theoph %>%
select(Subject, Time, conc)
head(theoph_sel)
## 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
Use a combination of select() and distinct() to make a new data frame containing a single row for each subject with the subject ID, their weight and the dose
theoph_dis = theoph %>%
select(Subject, Wt, Dose) %>%
distinct(Subject, Wt, Dose)
theoph_dis
## 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
## 7 7 64.6 4.95
## 8 8 70.5 4.53
## 9 9 86.4 3.10
## 10 10 58.2 5.50
## 11 11 65.0 4.92
## 12 12 60.5 5.30
Use filter() to make a new data frame containing only the first subject
theoph_sub1 = theoph %>%
filter(Subject == 1)
theoph_sub1
## 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
Use filter() to make a new data frame containing only the first four subjects
theoph_sub14 = theoph %>%
filter(Subject %in% c(1, 2, 3, 4))
theoph_sub14
## 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
Use group_by() to calculate the average concentration per subject (across all times)
theoph_conc = theoph %>%
group_by(Subject) %>%
summarize(avgconc = mean(conc))
theoph_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
Use filter() to 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_plot1 = theoph %>%
filter(Subject == 1) %>%
ggplot(aes(x=Time, y=conc)) + geom_line()
theoph_plot1
Use 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_plot2 = theoph %>%
select(Subject, Time, conc) %>%
ggplot(aes(x=Time, y=conc, col=Subject)) + geom_line()
theoph_plot2
Use 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_plot3 = theoph %>%
select(Subject, Time, conc) %>%
ggplot(aes(x=Time, y=conc)) + geom_line() + facet_wrap(~Subject)
theoph_plot3