Exercise 1: Read in the Evans data set. Type in the R expressions below. Do not copy and paste. After each expression briefly describe what the step accomplished
edat <- read.table("https://raw.githubusercontent.com/taragonmd/data/master/evans.csv", header = TRUE, sep = "")
str(edat)
## 'data.frame': 609 obs. of 12 variables:
## $ id : int 21 31 51 71 74 91 111 131 141 191 ...
## $ chd: int 0 0 1 0 0 0 1 0 0 0 ...
## $ cat: int 0 0 1 1 0 0 0 0 0 0 ...
## $ age: int 56 43 56 64 49 46 52 63 42 55 ...
## $ chl: int 270 159 201 179 243 252 179 217 176 250 ...
## $ smk: int 0 1 1 1 1 1 1 0 1 0 ...
## $ ecg: int 0 0 1 0 0 0 1 0 0 1 ...
## $ dbp: int 80 74 112 100 82 88 80 92 76 114 ...
## $ sbp: int 138 128 164 200 145 142 128 135 114 182 ...
## $ hpt: int 0 0 1 1 0 0 0 0 0 1 ...
## $ ch : int 0 0 1 1 0 0 0 0 0 0 ...
## $ cc : int 0 0 201 179 0 0 0 0 0 0 ...
edat data frame has 609 observations of 12 variables including id,chd,cat,age,chl,smk,ecg,dbp,sbp,hpt,ch,and cc
#### (1)
xtabs(~chd, data = edat)
## chd
## 0 1
## 538 71
chd variable displays a table with column label of 0 (538 observations) and 1 (71 observations)
edat$chd2 <- factor(edat$chd, levels = 0:1,
labels = c("No", "Yes"))
xtabs(~chd2, data = edat) # Test
## chd2
## No Yes
## 538 71
the label 0 and 1 on the chd variable changed to No and Yes respectively on the new variable, chd2, after application of the test
xtabs(~cat, data = edat)
## cat
## 0 1
## 487 122
cat variable displays a table with column label of 0 (487 observations) and 1 (122 observations)
edat$cat2 <- factor(edat$cat, levels = 0:1,
labels = c("Normal", "High"))
xtabs(~cat2, data = edat) # Test
## cat2
## Normal High
## 487 122
After application of the test,the label 0 and 1 on the cat variable changed to Normal and High respectively on the new variable cat2
xtabs(~smk, data = edat)
## smk
## 0 1
## 222 387
smk variable displays a table with column labels of 0 (222 observations) and 1 (387 observations)
edat$smk2 <- factor(edat$smk, levels = 0:1,
labels = c("Never", "Ever"))
xtabs(~smk2, data = edat) # Test
## smk2
## Never Ever
## 222 387
After application of the test,the label 0 and 1 on the smk variable changed to Never and Ever respectively on the new variable,smk2
xtabs(~ecg, data = edat)
## ecg
## 0 1
## 443 166
ecg variable displays a table with column labels of 0 (443 observations) and 1 (166 observations).
edat$ecg2 <- factor(edat$ecg, levels = 0:1,
labels = c("Normal", "Abnormal"))
xtabs(~ecg2, data = edat) # test
## ecg2
## Normal Abnormal
## 443 166
After test application, the initial label 0 and 1 on the ecg variable changed to Normal and Abnormal respectively on the new variable,ecg2
xtabs(~hpt, data = edat)
## hpt
## 0 1
## 354 255
hpt variable displays a table with column labels of 0 (354 observations) and 1 (255 observations).
edat$hpt2 <- factor(edat$hpt, levels = 0:1,
labels = c("No", "Yes"))
xtabs(~hpt2, data = edat) # Test
## hpt2
## No Yes
## 354 255
Similarly,After application of the test, the initial column label 0 and 1 on the ecg variable changed to No and yes respectively on the new variable,hpt2
#### (2)
quantile(edat$age)
## 0% 25% 50% 75% 100%
## 40 46 52 60 76
edat$age4 <- cut(edat$age, quantile(edat$age), right = FALSE,
include.lowest = TRUE)
xtabs(~age4, data = edat)
## age4
## [40,46) [46,52) [52,60) [60,76]
## 134 158 158 159
The table above shows different catogory of age interval that represents each quantile. the lower interval of each caterogory is closed meaning the count includes the lower interval value in each of the categories and does not include the upper interval in all the categories. Using the first category as an eaxample >= 40 & >46
#### (3)
hptnew <- rep(NA, nrow(edat))
normal <- edat$sbp < 120 & edat$dbp < 80
hptnew[normal] <- 1
prehyp <- (edat$sbp >= 120 & edat$sbp < 140) |
(edat$dbp >= 80 & edat$dbp < 90)
hptnew[prehyp] <- 2
stage1 <- (edat$sbp >= 140 & edat$sbp < 160) |
(edat$dbp >= 90 & edat$dbp < 100)
hptnew[stage1] <- 3
stage2 <- edat$sbp >= 160 | edat$dbp >= 100
hptnew[stage2] <- 4
edat$hpt4 <- factor(hptnew, levels = 1:4,
labels=c("Normal", "PreHTN", "HTN.Stage1",
"HTN.Stage2"))
xtabs(~hpt4, data = edat) # test
## hpt4
## Normal PreHTN HTN.Stage1 HTN.Stage2
## 56 165 177 211
The R codes creates new vector called hpt4 with values categorized as 1, 2, 3, and 4 corresponding to stages of hypertension as normal, prehyp, stage 1, and stage 2 respectively based on the levels of sbp and dbp. The output is a table that the shows the distribution across hypertension categories.
#### (4)
xtabs(~hpt2 + hpt4, data = edat)
## hpt4
## hpt2 Normal PreHTN HTN.Stage1 HTN.Stage2
## No 56 165 133 0
## Yes 0 0 44 211
This creates a matrix table to show the stages of blood presure (hpt4) and their status (hpt2) whether some one has it (Yes) or does not (No).
Exercise 2: Review the California 2004 surveillance data on human West Nile virus cases available at ~/data/wnv/wnv2004raw.txt. Read in the data setting as.is = TRUE, taking into account missing values (use na.strings option). Convert the calendar dates into the international standard format. Using the write.table function export the data as an ASCII text file.
wdat <- read.table("https://raw.githubusercontent.com/taragonmd/data/master/wnv2004raw.csv", header = TRUE,
sep = ",", as.is = TRUE, na.strings = c(".","Unknown"))
str(wdat)
## 'data.frame': 781 obs. of 8 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ County : chr "San Bernardino" "San Bernardino" "San Bernardino" "San Bernardino" ...
## $ Age : chr "40" "64" "19" "12" ...
## $ Sex : chr "F" "F" "M" "M" ...
## $ Syndrome : chr "WNF" "WNF" "WNF" "WNF" ...
## $ Date.onset: chr "05/19/2004" "05/22/2004" "05/22/2004" "05/16/2004" ...
## $ Date.test : chr "06/02/2004" "06/16/2004" "06/16/2004" "06/16/2004" ...
## $ Death : chr "No" "No" "No" "No" ...
wdat$date.onset2 <- as.Date(wdat$Date.onset, format = "%m/%d/%Y")
wdat$date.tested2 <- as.Date(wdat$Date.test, format = "%m/%d/%Y")
write.table(wdat, "/Users/dr.auwal/Desktop/Personals/UC Berkeley/Classes/PB HLTH 251D Applied Epidemiology Using R/Homework/Homework 4/wnvdat.txt",
sep = ",", row.names = FALSE)
wdat.test <- read.csv("/Users/dr.auwal/Desktop/Personals/UC Berkeley/Classes/PB HLTH 251D Applied Epidemiology Using R/Homework/Homework 4/wnvdat.txt")
head(wdat.test)
## ID County Age Sex Syndrome Date.onset Date.test Death
## 1 1 San Bernardino 40 F WNF 05/19/2004 06/02/2004 No
## 2 2 San Bernardino 64 F WNF 05/22/2004 06/16/2004 No
## 3 3 San Bernardino 19 M WNF 05/22/2004 06/16/2004 No
## 4 4 San Bernardino 12 M WNF 05/16/2004 06/16/2004 No
## 5 5 San Bernardino 12 M WNF 05/14/2004 06/16/2004 No
## 6 6 San Bernardino 17 M WNF 06/07/2004 06/17/2004 No
## date.onset2 date.tested2
## 1 2004-05-19 2004-06-02
## 2 2004-05-22 2004-06-16
## 3 2004-05-22 2004-06-16
## 4 2004-05-16 2004-06-16
## 5 2004-05-14 2004-06-16
## 6 2004-06-07 2004-06-17
str(wdat.test)
## 'data.frame': 781 obs. of 10 variables:
## $ ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ County : Factor w/ 24 levels "Butte","DUPLICATE",..: 15 15 15 15 15 15 15 15 9 13 ...
## $ Age : Factor w/ 95 levels "","?18","<18",..: 37 63 14 7 7 12 60 74 71 22 ...
## $ Sex : Factor w/ 5 levels "","F","M","n/a",..: 2 2 3 3 3 3 3 2 3 3 ...
## $ Syndrome : Factor w/ 7 levels "","n/a","Unk",..: 4 4 4 4 4 4 6 6 4 6 ...
## $ Date.onset : Factor w/ 134 levels "","05/14/2004",..: 4 5 5 3 2 6 8 11 8 10 ...
## $ Date.test : Factor w/ 105 levels "","01/21/2005",..: 5 6 6 6 6 7 8 9 10 10 ...
## $ Death : Factor w/ 5 levels "","n/a","No",..: 3 3 3 3 3 3 3 3 3 3 ...
## $ date.onset2 : Factor w/ 121 levels "2004-05-14","2004-05-16",..: 3 4 4 2 1 5 7 10 7 9 ...
## $ date.tested2: Factor w/ 104 levels "2004-06-02","2004-06-16",..: 1 2 2 2 2 3 4 5 6 6 ...
Exercise 3: On April 19, 1940, the local health officer in the village of Lycoming, Oswego County, New York, reported the occurrence of an outbreak of acute gastrointestinal illness to the District Health Officer in Syracuse. Dr. A. M. Rubin, epidemiologist-in-training, was assigned to conduct an investigation. (See Appendix D for data dictionary.) When Dr. Rubin arrived in the field, he learned from the health officer that all persons known to be ill had attended a church supper held on the previous evening, April 18. Family members who did not attend the church supper did not become ill. Accordingly, Dr. Rubin focused the investigation on the supper. He completed Interviews with 75 of the 80 persons known to have attended, collecting information about the occurrence and time of onset of symptoms, and foods consumed. Of the 75 persons interviewed, 46 persons reported gastrointestinal illness. The onset of illness in all cases was acute, characterized chiefly by nausea,vomiting, diarrhea, and abdominal pain. None of the ill persons reported having an elevated temperature; all recovered within 24 to 30 hours. Approximately 20% of the ill persons visited physicians. No fecal specimens were obtained for bacteriologic examination. The investigators suspected that this was a vehicle-borne outbreak, with food as the vehicle. Dr. Rubin put his data into a line listing. See the raw data set at ~/data/oswego/oswego.txt.The supper was held in the basement of the village church. Foods were contributed by numerous members of the congregation. The supper began at 6:00 p.m. and continued until 11:00 p.m. Food was spread out on a table and consumed over a period of several hours. Data regarding onset of illness and food eaten or water drunk by each of the 75 persons interviewed are provided in the line listing. The approximate time of eating supper was collected for only about half the persons who had gastrointestinal illness.
odat <- read.table("https://raw.githubusercontent.com/taragonmd/data/master/oswego/oswego.txt", sep = "", header = TRUE, na.strings = ".")
str(odat)
## 'data.frame': 75 obs. of 21 variables:
## $ id : int 2 3 4 6 7 8 9 10 14 16 ...
## $ age : int 52 65 59 63 70 40 15 33 10 32 ...
## $ sex : Factor w/ 2 levels "F","M": 1 2 1 1 2 1 1 1 2 1 ...
## $ meal.time : Factor w/ 7 levels "10:00 PM","11:00 AM",..: 6 3 3 5 5 5 1 4 5 7 ...
## $ ill : Factor w/ 2 levels "N","Y": 2 2 2 2 2 2 2 2 2 2 ...
## $ onset.date : Factor w/ 3 levels "4/18","4/19",..: 2 2 2 1 1 2 2 1 2 2 ...
## $ onset.time : Factor w/ 18 levels "1:00 AM","10:00 PM",..: 9 9 9 5 5 10 1 6 10 4 ...
## $ baked.ham : Factor w/ 2 levels "N","Y": 2 2 2 2 2 1 1 2 1 2 ...
## $ spinach : Factor w/ 2 levels "N","Y": 2 2 2 2 2 1 1 2 1 2 ...
## $ mashed.potato : Factor w/ 3 levels "N","NA","Y": 3 3 1 1 3 1 1 3 1 1 ...
## $ cabbage.salad : Factor w/ 2 levels "N","Y": 1 2 1 2 1 1 1 1 1 1 ...
## $ jello : Factor w/ 2 levels "N","Y": 1 1 1 2 2 1 1 1 1 1 ...
## $ rolls : Factor w/ 2 levels "N","Y": 2 1 1 1 2 1 1 2 1 2 ...
## $ brown.bread : Factor w/ 2 levels "N","Y": 1 1 1 1 2 1 1 2 1 1 ...
## $ milk : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
## $ coffee : Factor w/ 2 levels "N","Y": 2 2 2 1 2 1 1 1 1 2 ...
## $ water : Factor w/ 2 levels "N","Y": 1 1 1 2 2 1 1 2 1 1 ...
## $ cakes : Factor w/ 2 levels "N","Y": 1 1 2 1 1 1 2 1 1 2 ...
## $ van.ice.cream : Factor w/ 2 levels "N","Y": 2 2 2 2 2 2 1 2 2 2 ...
## $ choc.ice.cream: Factor w/ 3 levels "N","NA","Y": 1 3 3 1 1 3 3 3 3 3 ...
## $ fruit.salad : Factor w/ 2 levels "N","Y": 1 1 1 1 1 1 1 1 1 1 ...
head(odat)
## id age sex meal.time ill onset.date onset.time baked.ham spinach
## 1 2 52 F 8:00 PM Y 4/19 12:30 AM Y Y
## 2 3 65 M 6:30 PM Y 4/19 12:30 AM Y Y
## 3 4 59 F 6:30 PM Y 4/19 12:30 AM Y Y
## 4 6 63 F 7:30 PM Y 4/18 10:30 PM Y Y
## 5 7 70 M 7:30 PM Y 4/18 10:30 PM Y Y
## 6 8 40 F 7:30 PM Y 4/19 2:00 AM N N
## mashed.potato cabbage.salad jello rolls brown.bread milk coffee water
## 1 Y N N Y N N Y N
## 2 Y Y N N N N Y N
## 3 N N N N N N Y N
## 4 N Y Y N N N N Y
## 5 Y N Y Y Y N Y Y
## 6 N N N N N N N N
## cakes van.ice.cream choc.ice.cream fruit.salad
## 1 N Y N N
## 2 N Y Y N
## 3 Y Y Y N
## 4 N Y N N
## 5 N Y N N
## 6 N Y Y N
a1: Using RStudio plot the cases by time of onset of illness (include appropriate labels and title). What does this graph tell you? (Hint:Process the text data and then use the hist function.)
mdt <- paste("4/18/1940", odat$meal.time) # create vector w/ meal date and time
meal.dt <- strptime(mdt, "%m/%d/%Y %I:%M %p") # convert to standard date and time
#### create vector with onset date and time
odt <- paste(paste(odat$onset.date,"/1940",sep = ""), odat$onset.time)
onset.dt <- strptime(odt, "%m/%d/%Y %I:%M %p") # convert into std date & time
hist(onset.dt, breaks = 30, freq = TRUE, main = "Histogram of onset of illness",
xlab = "Onset date and time")

From the histogram, it seems the highest number of cases was around 1am
a2: Now that we have our data frame in R, we can identify those subjects that correspond to minimum and maximum onset times. We will implement R code that can be interpreted as “which positions in vector Y correspond to the minimum values in Y?” We then use these position numbers to indexing the corresponding rows in the data frame.
#### Generate logical vectors and identify 'which' position
min.obs.pos <- which(onset.dt == min(onset.dt, na.rm = TRUE))
min.obs.pos
## [1] 33
max.obs.pos <- which(onset.dt == max(onset.dt, na.rm = TRUE))
max.obs.pos
## [1] 10
#### index data frame to display outliers
odat[min.obs.pos, ]
## id age sex meal.time ill onset.date onset.time baked.ham spinach
## 33 52 8 M 11:00 AM Y 4/18 3:00 PM N N
## mashed.potato cabbage.salad jello rolls brown.bread milk coffee water
## 33 N N N N N N N N
## cakes van.ice.cream choc.ice.cream fruit.salad
## 33 N Y Y N
odat[max.obs.pos, ]
## id age sex meal.time ill onset.date onset.time baked.ham spinach
## 10 16 32 F NA Y 4/19 10:30 AM Y Y
## mashed.potato cabbage.salad jello rolls brown.bread milk coffee water
## 10 N N N Y N N Y N
## cakes van.ice.cream choc.ice.cream fruit.salad
## 10 Y Y Y N
a3: We can sort the data frame based values of one or more fields. Suppose we want to sort on illness status and illness onset times. We will use our onset.times vector we created earlier; however, we will need to convert it to “continuous time” in seconds to sort this vector.Study and implement the R code below.
onset.ct <- as.POSIXct(onset.dt)
odat2 <- odat[order(odat$ill, onset.ct), ]
odat2
## id age sex meal.time ill onset.date onset.time baked.ham spinach
## 47 1 11 M NA N NA NA N N
## 48 5 13 F NA N NA NA N N
## 49 11 65 M NA N NA NA Y Y
## 50 12 38 F NA N NA NA Y Y
## 51 13 62 F NA N NA NA Y Y
## 52 15 25 M NA N NA NA Y Y
## 53 19 11 M NA N NA NA Y Y
## 54 23 64 M NA N NA NA N N
## 55 25 65 F NA N NA NA Y Y
## 56 28 62 M NA N NA NA Y Y
## 57 30 17 M 10:00 PM N NA NA N N
## 58 34 40 M NA N NA NA Y Y
## 59 35 35 F NA N NA NA Y Y
## 60 37 36 M NA N NA NA Y N
## 61 41 54 F NA N NA NA Y Y
## 62 45 20 M 10:00 PM N NA NA N N
## 63 46 17 M NA N NA NA Y Y
## 64 50 9 F NA N NA NA N N
## 65 51 50 M NA N NA NA Y Y
## 66 53 35 F NA N NA NA N N
## 67 56 11 F NA N NA NA N N
## 68 61 37 M NA N NA NA N N
## 69 62 24 F NA N NA NA Y Y
## 70 63 69 F NA N NA NA N Y
## 71 64 7 M NA N NA NA Y Y
## 72 67 11 F 7:30 PM N NA NA Y Y
## 73 68 17 M 7:30 PM N NA NA Y Y
## 74 69 36 F NA N NA NA N N
## 75 73 14 F 10:00 PM N NA NA N N
## 33 52 8 M 11:00 AM Y 4/18 3:00 PM N N
## 20 31 35 M NA Y 4/18 9:00 PM Y Y
## 23 36 35 F NA Y 4/18 9:15 PM Y Y
## 26 40 68 M NA Y 4/18 9:30 PM Y N
## 29 44 58 M NA Y 4/18 9:30 PM Y Y
## 16 24 3 M NA Y 4/18 9:45 PM N Y
## 17 26 59 F NA Y 4/18 9:45 PM N Y
## 13 20 33 F NA Y 4/18 10:00 PM Y Y
## 12 18 36 M NA Y 4/18 10:15 PM Y Y
## 4 6 63 F 7:30 PM Y 4/18 10:30 PM Y Y
## 5 7 70 M 7:30 PM Y 4/18 10:30 PM Y Y
## 32 49 52 F NA Y 4/18 10:30 PM Y Y
## 36 57 74 M NA Y 4/18 10:30 PM Y Y
## 8 10 33 F 7:00 PM Y 4/18 11:00 PM Y Y
## 15 22 7 M NA Y 4/18 11:00 PM Y Y
## 19 29 37 F NA Y 4/18 11:00 PM Y Y
## 35 55 25 M NA Y 4/18 11:00 PM Y N
## 46 75 45 F NA Y 4/18 11:00 PM Y Y
## 24 38 57 F NA Y 4/18 11:30 PM Y Y
## 39 60 53 F 7:30 PM Y 4/18 11:30 PM Y Y
## 34 54 48 F NA Y 4/19 12:00 AM Y Y
## 44 72 18 F 7:30 PM Y 4/19 12:00 AM Y Y
## 1 2 52 F 8:00 PM Y 4/19 12:30 AM Y Y
## 2 3 65 M 6:30 PM Y 4/19 12:30 AM Y Y
## 3 4 59 F 6:30 PM Y 4/19 12:30 AM Y Y
## 11 17 62 F NA Y 4/19 12:30 AM N N
## 30 47 62 F NA Y 4/19 12:30 AM Y Y
## 41 66 8 F NA Y 4/19 12:30 AM Y N
## 42 70 21 F NA Y 4/19 12:30 AM Y N
## 7 9 15 F 10:00 PM Y 4/19 1:00 AM N N
## 14 21 13 F 10:00 PM Y 4/19 1:00 AM N N
## 18 27 15 F 10:00 PM Y 4/19 1:00 AM N N
## 21 32 15 M 10:00 PM Y 4/19 1:00 AM N N
## 22 33 50 F 10:00 PM Y 4/19 1:00 AM N N
## 25 39 16 F 10:00 PM Y 4/19 1:00 AM N N
## 31 48 20 F 7:00 PM Y 4/19 1:00 AM N N
## 37 58 12 F 10:00 PM Y 4/19 1:00 AM N N
## 40 65 17 F 10:00 PM Y 4/19 1:00 AM N N
## 43 71 60 M 7:30 PM Y 4/19 1:00 AM N N
## 6 8 40 F 7:30 PM Y 4/19 2:00 AM N N
## 9 14 10 M 7:30 PM Y 4/19 2:00 AM N N
## 28 43 72 F NA Y 4/19 2:00 AM Y Y
## 45 74 52 M NA Y 4/19 2:15 AM Y N
## 27 42 77 M NA Y 4/19 2:30 AM N N
## 38 59 44 F 7:30 PM Y 4/19 2:30 AM Y Y
## 10 16 32 F NA Y 4/19 10:30 AM Y Y
## mashed.potato cabbage.salad jello rolls brown.bread milk coffee water
## 47 N N N N N N N N
## 48 N N N N N N N N
## 49 Y N Y Y N N N N
## 50 Y N N Y N N Y N
## 51 N Y Y Y Y N N Y
## 52 Y Y Y Y Y Y Y Y
## 53 NA Y N Y N N N Y
## 54 N N N N N N N N
## 55 Y Y Y N Y N Y N
## 56 N Y N Y Y N Y Y
## 57 N N N N N N N N
## 58 N N N Y Y N Y Y
## 59 Y N N Y Y N Y Y
## 60 Y Y N Y Y N Y N
## 61 Y N N Y N N Y N
## 62 N N N N N N N N
## 63 Y N N Y N N N Y
## 64 N N N N N N N N
## 65 Y Y Y Y Y Y Y Y
## 66 N N N N N N N N
## 67 N N N N N N N N
## 68 N N N N N N N N
## 69 Y N N Y N N Y N
## 70 Y N Y N Y N N Y
## 71 Y Y Y Y N N N Y
## 72 Y Y N Y N N Y Y
## 73 Y Y N Y N N Y N
## 74 N N N N N N N N
## 75 N N N N N N N N
## 33 N N N N N N N N
## 20 Y N Y Y Y N Y N
## 23 Y Y N Y Y N Y N
## 26 Y Y N N Y N Y N
## 29 Y N N N Y Y Y N
## 16 Y N N Y N N N Y
## 17 Y Y N Y Y N N Y
## 13 Y Y Y Y N N Y Y
## 12 N Y N Y Y N N N
## 4 N Y Y N N N N Y
## 5 Y N Y Y Y N Y Y
## 32 Y Y N Y N N Y N
## 36 Y Y Y Y Y N Y N
## 8 Y N N Y Y N N Y
## 15 Y Y Y Y Y N N Y
## 19 Y N Y Y Y N Y N
## 35 Y N N Y Y N N Y
## 46 Y Y Y Y Y N Y N
## 24 N Y Y Y Y N Y N
## 39 Y Y Y N Y N Y Y
## 34 Y Y Y Y Y Y Y N
## 44 Y Y Y N N N N Y
## 1 Y N N Y N N Y N
## 2 Y Y N N N N Y N
## 3 N N N N N N Y N
## 11 N N N N N N N N
## 30 N N N Y N N N Y
## 41 Y Y Y N N N N N
## 42 N Y Y N N N N N
## 7 N N N N N N N N
## 14 N N N N N N N N
## 18 N N N N N N N N
## 21 N N N N N N N N
## 22 N N N N N N N N
## 25 N N N N N N N N
## 31 N N N N N N N N
## 37 N N N N N N N N
## 40 N N N N N N N N
## 43 N N N N N N N N
## 6 N N N N N N N N
## 9 N N N N N N N N
## 28 N Y Y N Y N Y N
## 45 Y N Y Y Y N Y Y
## 27 N N N N N N N N
## 38 Y N N Y N N N Y
## 10 N N N Y N N Y N
## cakes van.ice.cream choc.ice.cream fruit.salad
## 47 N N Y N
## 48 N N Y N
## 49 N Y N N
## 50 N Y Y Y
## 51 N N N N
## 52 Y Y N N
## 53 N N Y N
## 54 N Y N N
## 55 Y Y Y N
## 56 Y N Y N
## 57 Y Y Y N
## 58 Y N Y Y
## 59 N N Y N
## 60 N N Y N
## 61 Y N Y N
## 62 Y Y Y N
## 63 N Y Y N
## 64 Y N Y N
## 65 Y N Y N
## 66 N Y Y N
## 67 N N Y N
## 68 N N Y N
## 69 N N N N
## 70 Y N Y N
## 71 Y N Y N
## 72 N N Y N
## 73 Y Y N N
## 74 N N Y N
## 75 Y Y N N
## 33 N Y Y N
## 20 Y Y N Y
## 23 N Y N N
## 26 N Y N N
## 29 N Y NA Y
## 16 Y Y N N
## 17 Y Y N N
## 13 Y Y Y N
## 12 N Y N N
## 4 N Y N N
## 5 N Y N N
## 32 N Y Y N
## 36 Y Y N N
## 8 N Y Y N
## 15 Y Y Y N
## 19 Y Y N N
## 35 Y Y Y N
## 46 Y Y N Y
## 24 Y Y Y N
## 39 Y Y Y N
## 34 Y Y Y N
## 44 Y Y Y N
## 1 N Y N N
## 2 N Y Y N
## 3 Y Y Y N
## 11 N Y N N
## 30 N Y N N
## 41 Y Y Y N
## 42 N Y Y N
## 7 Y N Y N
## 14 Y Y N N
## 18 Y Y Y N
## 21 Y Y N N
## 22 N Y N N
## 25 Y N Y N
## 31 N Y N N
## 37 Y Y Y N
## 40 Y Y Y N
## 43 Y Y N N
## 6 N Y Y N
## 9 N Y Y N
## 28 Y Y Y N
## 45 Y Y Y N
## 27 N Y N Y
## 38 Y N Y N
## 10 Y Y Y N
a4: Calculate incubation periods and plot histogram using truehist.
#### Calculate incubation periods
incub.dt <- onset.dt - meal.dt
library(MASS)
truehist(as.numeric(incub.dt), nbins = 7, prob = FALSE, ylab = 'Frequency',
col = "skyblue", xlab = "Incubation Period (hours)")

mean(incub.dt, na.rm = TRUE)
## Time difference of 4.295455 hours
median(incub.dt, na.rm = TRUE)
## Time difference of 4 hours
range(incub.dt, na.rm = TRUE)
## Time differences in hours
## [1] 3 7
b: Are there any cases for which the times of onset are inconsistent with the general experience? How might they be explained?
Yes, there are some cases that were reported before and long time after the supper was served. the supper was served at 6pm (18:00) and few cases were reported before this time, which means these individuals could be experiencing similar GI symptoms due to different cause.
c: How could the data be sorted by illness status and illness onset times?
odat[order(odat$ill, odat$onset.time),]
## id age sex meal.time ill onset.date onset.time baked.ham spinach
## 47 1 11 M NA N NA NA N N
## 48 5 13 F NA N NA NA N N
## 49 11 65 M NA N NA NA Y Y
## 50 12 38 F NA N NA NA Y Y
## 51 13 62 F NA N NA NA Y Y
## 52 15 25 M NA N NA NA Y Y
## 53 19 11 M NA N NA NA Y Y
## 54 23 64 M NA N NA NA N N
## 55 25 65 F NA N NA NA Y Y
## 56 28 62 M NA N NA NA Y Y
## 57 30 17 M 10:00 PM N NA NA N N
## 58 34 40 M NA N NA NA Y Y
## 59 35 35 F NA N NA NA Y Y
## 60 37 36 M NA N NA NA Y N
## 61 41 54 F NA N NA NA Y Y
## 62 45 20 M 10:00 PM N NA NA N N
## 63 46 17 M NA N NA NA Y Y
## 64 50 9 F NA N NA NA N N
## 65 51 50 M NA N NA NA Y Y
## 66 53 35 F NA N NA NA N N
## 67 56 11 F NA N NA NA N N
## 68 61 37 M NA N NA NA N N
## 69 62 24 F NA N NA NA Y Y
## 70 63 69 F NA N NA NA N Y
## 71 64 7 M NA N NA NA Y Y
## 72 67 11 F 7:30 PM N NA NA Y Y
## 73 68 17 M 7:30 PM N NA NA Y Y
## 74 69 36 F NA N NA NA N N
## 75 73 14 F 10:00 PM N NA NA N N
## 7 9 15 F 10:00 PM Y 4/19 1:00 AM N N
## 14 21 13 F 10:00 PM Y 4/19 1:00 AM N N
## 18 27 15 F 10:00 PM Y 4/19 1:00 AM N N
## 21 32 15 M 10:00 PM Y 4/19 1:00 AM N N
## 22 33 50 F 10:00 PM Y 4/19 1:00 AM N N
## 25 39 16 F 10:00 PM Y 4/19 1:00 AM N N
## 31 48 20 F 7:00 PM Y 4/19 1:00 AM N N
## 37 58 12 F 10:00 PM Y 4/19 1:00 AM N N
## 40 65 17 F 10:00 PM Y 4/19 1:00 AM N N
## 43 71 60 M 7:30 PM Y 4/19 1:00 AM N N
## 13 20 33 F NA Y 4/18 10:00 PM Y Y
## 12 18 36 M NA Y 4/18 10:15 PM Y Y
## 10 16 32 F NA Y 4/19 10:30 AM Y Y
## 4 6 63 F 7:30 PM Y 4/18 10:30 PM Y Y
## 5 7 70 M 7:30 PM Y 4/18 10:30 PM Y Y
## 32 49 52 F NA Y 4/18 10:30 PM Y Y
## 36 57 74 M NA Y 4/18 10:30 PM Y Y
## 8 10 33 F 7:00 PM Y 4/18 11:00 PM Y Y
## 15 22 7 M NA Y 4/18 11:00 PM Y Y
## 19 29 37 F NA Y 4/18 11:00 PM Y Y
## 35 55 25 M NA Y 4/18 11:00 PM Y N
## 46 75 45 F NA Y 4/18 11:00 PM Y Y
## 24 38 57 F NA Y 4/18 11:30 PM Y Y
## 39 60 53 F 7:30 PM Y 4/18 11:30 PM Y Y
## 34 54 48 F NA Y 4/19 12:00 AM Y Y
## 44 72 18 F 7:30 PM Y 4/19 12:00 AM Y Y
## 1 2 52 F 8:00 PM Y 4/19 12:30 AM Y Y
## 2 3 65 M 6:30 PM Y 4/19 12:30 AM Y Y
## 3 4 59 F 6:30 PM Y 4/19 12:30 AM Y Y
## 11 17 62 F NA Y 4/19 12:30 AM N N
## 30 47 62 F NA Y 4/19 12:30 AM Y Y
## 41 66 8 F NA Y 4/19 12:30 AM Y N
## 42 70 21 F NA Y 4/19 12:30 AM Y N
## 6 8 40 F 7:30 PM Y 4/19 2:00 AM N N
## 9 14 10 M 7:30 PM Y 4/19 2:00 AM N N
## 28 43 72 F NA Y 4/19 2:00 AM Y Y
## 45 74 52 M NA Y 4/19 2:15 AM Y N
## 27 42 77 M NA Y 4/19 2:30 AM N N
## 38 59 44 F 7:30 PM Y 4/19 2:30 AM Y Y
## 33 52 8 M 11:00 AM Y 4/18 3:00 PM N N
## 20 31 35 M NA Y 4/18 9:00 PM Y Y
## 23 36 35 F NA Y 4/18 9:15 PM Y Y
## 26 40 68 M NA Y 4/18 9:30 PM Y N
## 29 44 58 M NA Y 4/18 9:30 PM Y Y
## 16 24 3 M NA Y 4/18 9:45 PM N Y
## 17 26 59 F NA Y 4/18 9:45 PM N Y
## mashed.potato cabbage.salad jello rolls brown.bread milk coffee water
## 47 N N N N N N N N
## 48 N N N N N N N N
## 49 Y N Y Y N N N N
## 50 Y N N Y N N Y N
## 51 N Y Y Y Y N N Y
## 52 Y Y Y Y Y Y Y Y
## 53 NA Y N Y N N N Y
## 54 N N N N N N N N
## 55 Y Y Y N Y N Y N
## 56 N Y N Y Y N Y Y
## 57 N N N N N N N N
## 58 N N N Y Y N Y Y
## 59 Y N N Y Y N Y Y
## 60 Y Y N Y Y N Y N
## 61 Y N N Y N N Y N
## 62 N N N N N N N N
## 63 Y N N Y N N N Y
## 64 N N N N N N N N
## 65 Y Y Y Y Y Y Y Y
## 66 N N N N N N N N
## 67 N N N N N N N N
## 68 N N N N N N N N
## 69 Y N N Y N N Y N
## 70 Y N Y N Y N N Y
## 71 Y Y Y Y N N N Y
## 72 Y Y N Y N N Y Y
## 73 Y Y N Y N N Y N
## 74 N N N N N N N N
## 75 N N N N N N N N
## 7 N N N N N N N N
## 14 N N N N N N N N
## 18 N N N N N N N N
## 21 N N N N N N N N
## 22 N N N N N N N N
## 25 N N N N N N N N
## 31 N N N N N N N N
## 37 N N N N N N N N
## 40 N N N N N N N N
## 43 N N N N N N N N
## 13 Y Y Y Y N N Y Y
## 12 N Y N Y Y N N N
## 10 N N N Y N N Y N
## 4 N Y Y N N N N Y
## 5 Y N Y Y Y N Y Y
## 32 Y Y N Y N N Y N
## 36 Y Y Y Y Y N Y N
## 8 Y N N Y Y N N Y
## 15 Y Y Y Y Y N N Y
## 19 Y N Y Y Y N Y N
## 35 Y N N Y Y N N Y
## 46 Y Y Y Y Y N Y N
## 24 N Y Y Y Y N Y N
## 39 Y Y Y N Y N Y Y
## 34 Y Y Y Y Y Y Y N
## 44 Y Y Y N N N N Y
## 1 Y N N Y N N Y N
## 2 Y Y N N N N Y N
## 3 N N N N N N Y N
## 11 N N N N N N N N
## 30 N N N Y N N N Y
## 41 Y Y Y N N N N N
## 42 N Y Y N N N N N
## 6 N N N N N N N N
## 9 N N N N N N N N
## 28 N Y Y N Y N Y N
## 45 Y N Y Y Y N Y Y
## 27 N N N N N N N N
## 38 Y N N Y N N N Y
## 33 N N N N N N N N
## 20 Y N Y Y Y N Y N
## 23 Y Y N Y Y N Y N
## 26 Y Y N N Y N Y N
## 29 Y N N N Y Y Y N
## 16 Y N N Y N N N Y
## 17 Y Y N Y Y N N Y
## cakes van.ice.cream choc.ice.cream fruit.salad
## 47 N N Y N
## 48 N N Y N
## 49 N Y N N
## 50 N Y Y Y
## 51 N N N N
## 52 Y Y N N
## 53 N N Y N
## 54 N Y N N
## 55 Y Y Y N
## 56 Y N Y N
## 57 Y Y Y N
## 58 Y N Y Y
## 59 N N Y N
## 60 N N Y N
## 61 Y N Y N
## 62 Y Y Y N
## 63 N Y Y N
## 64 Y N Y N
## 65 Y N Y N
## 66 N Y Y N
## 67 N N Y N
## 68 N N Y N
## 69 N N N N
## 70 Y N Y N
## 71 Y N Y N
## 72 N N Y N
## 73 Y Y N N
## 74 N N Y N
## 75 Y Y N N
## 7 Y N Y N
## 14 Y Y N N
## 18 Y Y Y N
## 21 Y Y N N
## 22 N Y N N
## 25 Y N Y N
## 31 N Y N N
## 37 Y Y Y N
## 40 Y Y Y N
## 43 Y Y N N
## 13 Y Y Y N
## 12 N Y N N
## 10 Y Y Y N
## 4 N Y N N
## 5 N Y N N
## 32 N Y Y N
## 36 Y Y N N
## 8 N Y Y N
## 15 Y Y Y N
## 19 Y Y N N
## 35 Y Y Y N
## 46 Y Y N Y
## 24 Y Y Y N
## 39 Y Y Y N
## 34 Y Y Y N
## 44 Y Y Y N
## 1 N Y N N
## 2 N Y Y N
## 3 Y Y Y N
## 11 N Y N N
## 30 N Y N N
## 41 Y Y Y N
## 42 N Y Y N
## 6 N Y Y N
## 9 N Y Y N
## 28 Y Y Y N
## 45 Y Y Y N
## 27 N Y N Y
## 38 Y N Y N
## 33 N Y Y N
## 20 Y Y N Y
## 23 N Y N N
## 26 N Y N N
## 29 N Y NA Y
## 16 Y Y N N
## 17 Y Y N N