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)
## 'data.frame': 132 obs. of 5 variables:
## $ Subject: int 1 1 1 1 1 1 1 1 1 1 ...
## $ Wt : num 79.6 79.6 79.6 79.6 79.6 79.6 79.6 79.6 79.6 79.6 ...
## $ Dose : num 4.02 4.02 4.02 4.02 4.02 4.02 4.02 4.02 4.02 4.02 ...
## $ Time : num 0 0.25 0.57 1.12 2.02 ...
## $ conc : num 0.74 2.84 6.57 10.5 9.66 8.58 8.36 7.47 6.89 5.94 ...
head(theoph)
## 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
theoph$Subject = factor(theoph$Subject)
For the fist problem of the assignment, we created a new data frame containing only subject Id, the Time, and conc variables.
theoph_stc <- select(theoph, Subject, Time, conc)
theoph_stc
## 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
## 7 1 5.10 8.36
## 8 1 7.03 7.47
## 9 1 9.05 6.89
## 10 1 12.12 5.94
## 11 1 24.37 3.28
## 12 2 0.00 0.00
## 13 2 0.27 1.72
## 14 2 0.52 7.91
## 15 2 1.00 8.31
## 16 2 1.92 8.33
## 17 2 3.50 6.85
## 18 2 5.02 6.08
## 19 2 7.03 5.40
## 20 2 9.00 4.55
## 21 2 12.00 3.01
## 22 2 24.30 0.90
## 23 3 0.00 0.00
## 24 3 0.27 4.40
## 25 3 0.58 6.90
## 26 3 1.02 8.20
## 27 3 2.02 7.80
## 28 3 3.62 7.50
## 29 3 5.08 6.20
## 30 3 7.07 5.30
## 31 3 9.00 4.90
## 32 3 12.15 3.70
## 33 3 24.17 1.05
## 34 4 0.00 0.00
## 35 4 0.35 1.89
## 36 4 0.60 4.60
## 37 4 1.07 8.60
## 38 4 2.13 8.38
## 39 4 3.50 7.54
## 40 4 5.02 6.88
## 41 4 7.02 5.78
## 42 4 9.02 5.33
## 43 4 11.98 4.19
## 44 4 24.65 1.15
## 45 5 0.00 0.00
## 46 5 0.30 2.02
## 47 5 0.52 5.63
## 48 5 1.00 11.40
## 49 5 2.02 9.33
## 50 5 3.50 8.74
## 51 5 5.02 7.56
## 52 5 7.02 7.09
## 53 5 9.10 5.90
## 54 5 12.00 4.37
## 55 5 24.35 1.57
## 56 6 0.00 0.00
## 57 6 0.27 1.29
## 58 6 0.58 3.08
## 59 6 1.15 6.44
## 60 6 2.03 6.32
## 61 6 3.57 5.53
## 62 6 5.00 4.94
## 63 6 7.00 4.02
## 64 6 9.22 3.46
## 65 6 12.10 2.78
## 66 6 23.85 0.92
## 67 7 0.00 0.15
## 68 7 0.25 0.85
## 69 7 0.50 2.35
## 70 7 1.02 5.02
## 71 7 2.02 6.58
## 72 7 3.48 7.09
## 73 7 5.00 6.66
## 74 7 6.98 5.25
## 75 7 9.00 4.39
## 76 7 12.05 3.53
## 77 7 24.22 1.15
## 78 8 0.00 0.00
## 79 8 0.25 3.05
## 80 8 0.52 3.05
## 81 8 0.98 7.31
## 82 8 2.02 7.56
## 83 8 3.53 6.59
## 84 8 5.05 5.88
## 85 8 7.15 4.73
## 86 8 9.07 4.57
## 87 8 12.10 3.00
## 88 8 24.12 1.25
## 89 9 0.00 0.00
## 90 9 0.30 7.37
## 91 9 0.63 9.03
## 92 9 1.05 7.14
## 93 9 2.02 6.33
## 94 9 3.53 5.66
## 95 9 5.02 5.67
## 96 9 7.17 4.24
## 97 9 8.80 4.11
## 98 9 11.60 3.16
## 99 9 24.43 1.12
## 100 10 0.00 0.24
## 101 10 0.37 2.89
## 102 10 0.77 5.22
## 103 10 1.02 6.41
## 104 10 2.05 7.83
## 105 10 3.55 10.21
## 106 10 5.05 9.18
## 107 10 7.08 8.02
## 108 10 9.38 7.14
## 109 10 12.10 5.68
## 110 10 23.70 2.42
## 111 11 0.00 0.00
## 112 11 0.25 4.86
## 113 11 0.50 7.24
## 114 11 0.98 8.00
## 115 11 1.98 6.81
## 116 11 3.60 5.87
## 117 11 5.02 5.22
## 118 11 7.03 4.45
## 119 11 9.03 3.62
## 120 11 12.12 2.69
## 121 11 24.08 0.86
## 122 12 0.00 0.00
## 123 12 0.25 1.25
## 124 12 0.50 3.96
## 125 12 1.00 7.82
## 126 12 2.00 9.72
## 127 12 3.52 9.75
## 128 12 5.07 8.57
## 129 12 7.07 6.59
## 130 12 9.03 6.11
## 131 12 12.05 4.57
## 132 12 24.15 1.17
The second task was to make a new data frame containing a single row for each subject with their Subject Id, weight, and dose of the drug.
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
–By utilizing the distinct() operator we are to get one single row for each subject.
The third task was to use the filter() operator to make a data frame only containing the first subject.
theoph_first <- theoph %>%
filter(Subject == 1)
theoph_first
## 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
The fourth task was to use the filter() operator to make a data frame containing only the first four subjects.
theoph_onefour <- theoph %>%
filter(Subject %in% c(1,2,3,4))
theoph_onefour
## 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
The fifth task was to utilize the group_by() operator and calculate the average concentration per subject(across all times).
theoph %>%
group_by(Subject) %>%
summarise(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
The sixth task was to use the filter() operator to make a data frame containing only the first subject. From there we had to pipe the data into ggplot() and make a line plot of concentration over time.
theoph_fg <- theoph %>%
filter(Subject == 1) %>%
ggplot(aes(x = Time, y = conc)) + geom_line()
theoph_fg
Nice looking graph isnt it?
For the seventh task we utilized the select() operator to extract only the Subject, Time , and concentraation variables. From there we piped them into ggplot() and made a line plot of concetration over time. It is important to note that Different subjects data is represented by different colors.
theoph %>%
select(Subject, Time, conc) %>%
ggplot(aes(x = Time, y = conc, col = Subject)) + geom_line()
Graphs getting a bit funky.
The final task was to also utilize the select() operator to exact once again, only the subject, time, and concentration variables. However, unlike the previous problem, we want to create seperate graphs faceted by SubjectID.
theoph %>%
select(Subject, Time, conc) %>%
ggplot(aes(x = Time, y = conc)) + geom_line() + facet_wrap(~Subject)
That is some cool stuff.