From 9f5cad476619f6b6aee8c02e1e40b026c9fbb51e Mon Sep 17 00:00:00 2001 From: Elias Date: Wed, 14 Dec 2022 23:08:58 -0500 Subject: [PATCH 1/2] R project --- .RData | Bin 0 -> 6328 bytes .Rhistory | 512 + analysis.R | 38 + countryX/allData.csv | 20063 ++++++++++++++++++++++++++++++++++++++ countryY/allData.csv | 19827 +++++++++++++++++++++++++++++++++++++ countryY/screen_120.csv | 996 +- countryY/screen_120.txt | 498 - countryY/screen_121.csv | 970 +- countryY/screen_121.txt | 485 - countryY/screen_122.csv | 960 +- countryY/screen_122.txt | 480 - countryY/screen_123.csv | 506 +- countryY/screen_123.txt | 253 - countryY/screen_124.csv | 960 +- countryY/screen_124.txt | 480 - countryY/screen_125.csv | 502 +- countryY/screen_125.txt | 251 - countryY/screen_126.csv | 576 +- countryY/screen_126.txt | 288 - countryY/screen_127.csv | 500 +- countryY/screen_127.txt | 250 - countryY/screen_128.csv | 720 +- countryY/screen_128.txt | 360 - countryY/screen_129.csv | 504 +- countryY/screen_129.txt | 252 - countryY/screen_130.csv | 444 +- countryY/screen_130.txt | 222 - countryY/screen_131.csv | 450 +- countryY/screen_131.txt | 225 - countryY/screen_132.csv | 482 +- countryY/screen_132.txt | 241 - countryY/screen_133.csv | 552 +- countryY/screen_133.txt | 276 - countryY/screen_134.csv | 450 +- countryY/screen_134.txt | 225 - countryY/screen_135.csv | 796 +- countryY/screen_135.txt | 398 - countryY/screen_136.csv | 938 +- countryY/screen_136.txt | 469 - countryY/screen_137.csv | 604 +- countryY/screen_137.txt | 302 - countryY/screen_138.csv | 926 +- countryY/screen_138.txt | 463 - countryY/screen_139.csv | 756 +- countryY/screen_139.txt | 378 - countryY/screen_140.csv | 836 +- countryY/screen_140.txt | 418 - countryY/screen_141.csv | 904 +- countryY/screen_141.txt | 452 - countryY/screen_142.csv | 868 +- countryY/screen_142.txt | 434 - countryY/screen_143.csv | 628 +- countryY/screen_143.txt | 314 - countryY/screen_144.csv | 434 +- countryY/screen_144.txt | 217 - countryY/screen_145.csv | 520 +- countryY/screen_145.txt | 260 - countryY/screen_146.csv | 896 +- countryY/screen_146.txt | 448 - countryY/screen_147.csv | 652 +- countryY/screen_147.txt | 326 - countryY/screen_148.csv | 736 +- countryY/screen_148.txt | 368 - countryY/screen_149.csv | 502 +- countryY/screen_149.txt | 251 - countryY/screen_150.csv | 594 +- countryY/screen_150.txt | 297 - countryY/screen_151.csv | 660 +- countryY/screen_151.txt | 330 - countryY/screen_152.csv | 778 +- countryY/screen_152.txt | 389 - countryY/screen_153.csv | 954 +- countryY/screen_153.txt | 477 - countryY/screen_154.csv | 544 +- countryY/screen_154.txt | 272 - countryY/screen_155.csv | 840 +- countryY/screen_155.txt | 420 - countryY/screen_156.csv | 738 +- countryY/screen_156.txt | 369 - countryY/screen_157.csv | 538 +- countryY/screen_157.txt | 269 - countryY/screen_158.csv | 740 +- countryY/screen_158.txt | 370 - countryY/screen_159.csv | 936 +- countryY/screen_159.txt | 468 - countryY/screen_160.csv | 960 +- countryY/screen_160.txt | 480 - countryY/screen_161.csv | 618 +- countryY/screen_161.txt | 309 - countryY/screen_162.csv | 870 +- countryY/screen_162.txt | 435 - countryY/screen_163.csv | 496 +- countryY/screen_163.txt | 248 - countryY/screen_164.csv | 604 +- countryY/screen_164.txt | 302 - countryY/screen_165.csv | 618 +- countryY/screen_165.txt | 309 - countryY/screen_166.csv | 698 +- countryY/screen_166.txt | 349 - countryY/screen_167.csv | 978 +- countryY/screen_167.txt | 489 - countryY/screen_168.csv | 996 +- countryY/screen_168.txt | 498 - countryY/screen_169.csv | 482 +- countryY/screen_169.txt | 241 - countryY/screen_170.csv | 886 +- countryY/screen_170.txt | 443 - countryY/screen_171.csv | 902 +- countryY/screen_171.txt | 451 - countryY/screen_172.csv | 662 +- countryY/screen_172.txt | 331 - countryY/screen_173.csv | 596 +- countryY/screen_173.txt | 298 - countryY/screen_174.csv | 780 +- countryY/screen_174.txt | 390 - countryY/screen_175.csv | 728 +- countryY/screen_175.txt | 364 - file | 2 + supportingFunctions.R | 113 + 119 files changed, 60437 insertions(+), 39764 deletions(-) create mode 100644 .RData create mode 100644 .Rhistory create mode 100644 analysis.R create mode 100644 countryX/allData.csv create mode 100644 countryY/allData.csv delete mode 100644 countryY/screen_120.txt delete mode 100644 countryY/screen_121.txt delete mode 100644 countryY/screen_122.txt delete mode 100644 countryY/screen_123.txt delete mode 100644 countryY/screen_124.txt delete mode 100644 countryY/screen_125.txt delete mode 100644 countryY/screen_126.txt delete mode 100644 countryY/screen_127.txt delete mode 100644 countryY/screen_128.txt delete mode 100644 countryY/screen_129.txt delete mode 100644 countryY/screen_130.txt delete mode 100644 countryY/screen_131.txt delete mode 100644 countryY/screen_132.txt delete mode 100644 countryY/screen_133.txt delete mode 100644 countryY/screen_134.txt delete mode 100644 countryY/screen_135.txt delete mode 100644 countryY/screen_136.txt delete mode 100644 countryY/screen_137.txt delete mode 100644 countryY/screen_138.txt delete mode 100644 countryY/screen_139.txt delete mode 100644 countryY/screen_140.txt delete mode 100644 countryY/screen_141.txt delete mode 100644 countryY/screen_142.txt delete mode 100644 countryY/screen_143.txt delete mode 100644 countryY/screen_144.txt delete mode 100644 countryY/screen_145.txt delete mode 100644 countryY/screen_146.txt delete mode 100644 countryY/screen_147.txt delete mode 100644 countryY/screen_148.txt delete mode 100644 countryY/screen_149.txt delete mode 100644 countryY/screen_150.txt delete mode 100644 countryY/screen_151.txt delete mode 100644 countryY/screen_152.txt delete mode 100644 countryY/screen_153.txt delete mode 100644 countryY/screen_154.txt delete mode 100644 countryY/screen_155.txt delete mode 100644 countryY/screen_156.txt delete mode 100644 countryY/screen_157.txt delete mode 100644 countryY/screen_158.txt delete mode 100644 countryY/screen_159.txt delete mode 100644 countryY/screen_160.txt delete mode 100644 countryY/screen_161.txt delete mode 100644 countryY/screen_162.txt delete mode 100644 countryY/screen_163.txt delete mode 100644 countryY/screen_164.txt delete mode 100644 countryY/screen_165.txt delete mode 100644 countryY/screen_166.txt delete mode 100644 countryY/screen_167.txt delete mode 100644 countryY/screen_168.txt delete mode 100644 countryY/screen_169.txt delete mode 100644 countryY/screen_170.txt delete mode 100644 countryY/screen_171.txt delete mode 100644 countryY/screen_172.txt delete mode 100644 countryY/screen_173.txt delete mode 100644 countryY/screen_174.txt delete mode 100644 countryY/screen_175.txt create mode 100644 file create mode 100644 supportingFunctions.R diff --git a/.RData b/.RData new file mode 100644 index 0000000000000000000000000000000000000000..e867dbdb1984cf05ccca2bd33863643d336bf5dd GIT binary patch literal 6328 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 target){ +print("Lower") +} +elif (guess target){ +print("Lower") +} +elif (guess target){ +print("Lower") +} +elif (guesstarget){ +print("Lower") +} +elif (guesstarget){ +print("Lower") +}elif (guesstarget){ +print("Lower") +}elif(guesstarget){ +print("Lower") +}else if(guesstarget){ +print("Lower") +}else if(guesstarget){ +print("Lower") +}else if(guesstarget){ +print("Lower") +}else if(guesstarget){ +print("Lower") +}else if(guesstarget){ +print("Lower") +}else if(guess 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) + #Total number of rows is equal to the number of infected + numinfected <- nrow(infected) + + #Number screened by gender + nummalescreen <-nrow(subset(all, gender == "male")) + numfemalescreen <-nrow(subset(all, gender == "female")) + + #Number of infected by gender + nummaleinfected <- nrow(subset(infected, gender == "male")) + numfemaleinfected <- nrow(subset(infected, gender == "female")) + + #Percent infected + percentinfected = numinfected/numscreen + malepercentinfected = nummaleinfected/nummalescreen + femalepercentinfected = numfemaleinfected/numfemalescreen + + #Print functions + print(paste("Percent of patients screened", numscreen, "with an infection rate of", percentinfected)) + print(paste("Percent of male patients screened", nummalescreen, "with an infection rate of", malepercentinfected)) + print(paste("Percent of female patients screened", numfemalescreen, "with an infection rate of", femalepercentinfected)) + + #Histogram of infected patients by age + ggplot() + geom_histogram(data=infected, aes(x=age,color="red"), binwidth = 1) +theme_classic() + +} + +#Provides the number of markers present by marker for a given country from summary data +markerDistribution <- function(file){ + data <- read.csv(file) + all <- subset(data, age<122) + #Creates a dataframe with the markers 1,10 and corresponding total marker count + df <- data.frame(marker = c(seq.int(1,10,by =1)), + count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) + #bar chart of marker distribution + ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat="summary")+theme_classic() +} + +#Determines the date of first infection for a given country from summary data +firstInfection <- function(file){ + data <- read.csv(file) + #Subsets the data for patients with a single marker present in any of the markers + infected <- subset(data, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) + print(min(infected$dayofYear)) +} + + From a553c2c120d019a7b85bfc491681480d81196920 Mon Sep 17 00:00:00 2001 From: Elias Date: Wed, 14 Dec 2022 23:51:19 -0500 Subject: [PATCH 2/2] Final R Project --- .RData | Bin 6328 -> 26447 bytes .Rhistory | 986 +++++++++++++++++++++--------------------- analysis.R | 7 +- supportingFunctions.R | 13 +- 4 files changed, 506 insertions(+), 500 deletions(-) diff --git a/.RData b/.RData index e867dbdb1984cf05ccca2bd33863643d336bf5dd..aba3b73ff15e2014a469e440c11a0485ff45076b 100644 GIT binary patch literal 26447 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 +numinfected <-nrow(infected) +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +print(numscreen) +infected <- subset(all,all[3:12] >0) +numinfected <- nrow(infected) +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +print(numscreen) +infected <- subset(all,all[3:12]==0) +numinfected <- nrow(infected) +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +print(numscreen) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +print(numscreen) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +percentinfected = numinfected/numscreen +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +print(numscreen) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +percentinfected = numinfected/numscreen +print(numinfected) +print(percentinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- infected["male"].value_counts() +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +print(maleinfected) +percentinfected = numinfected/numscreen +print(numinfected) +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- infected["male"].value_counts() +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- infected["male"].value_counts +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- subset(infected, gender == "male") +nummaleinfected = nrow(maleinfected) +percentinfected = numinfected/numscreen +femaleinfected <- subset(infected, gender == "female") +numfemaleinfected = nrow(femaleinfected) +print(numfemaleinfected) +print(nummaleinfected) +print(numinfected) +} +summarizeData("allData.csv") +#Initialize ggplot2 library(ggplot2) -mpg = read.table("mpg.txt", header=TRUE, sep="\t", stringsAsFactors=FALSE) -ggplot(data=mpg, aes(x=displ, y=cty)) + geom_point() -#make a theme -theme_Lect24 <- function(){ -theme_bw() + -theme(axis.text.x = element_text(angle=65, vjust=0.6)) -} -# challenge 1: -# A stacked bar plot showing counts of observations by tranmission type -# and year -ggplot(mpg, aes(x = trans, fill = as.factor(year))) + -geom_bar() + -xlab("Tranmission Type") + -theme_Lect24() + -theme(legend.title=element_blank()) -#make a theme +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- subset(infected, gender == "male") +nummaleinfected = nrow(maleinfected) +percentinfected = numinfected/numscreen +femaleinfected <- subset(infected, gender == "female") +numfemaleinfected = nrow(femaleinfected) +print(numfemaleinfected) +print(nummaleinfected) +print(numinfected) +ggplot() + geom_histogram(data=infected, aes(x=age,color="red")) +theme_classic() +} +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- subset(infected, gender == "male") +nummaleinfected = nrow(maleinfected) +percentinfected = numinfected/numscreen +femaleinfected <- subset(infected, gender == "female") +numfemaleinfected = nrow(femaleinfected) +print(numfemaleinfected) +print(nummaleinfected) +print(numinfected) +ggplot() + geom_histogram(data=infected, aes(x=age,color="red")) +theme_classic() +} +summarizeData("allData.csv") +summarizeData<- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +numscreen <- nrow(all) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +maleinfected <- subset(infected, gender == "male") +nummaleinfected = nrow(maleinfected) +percentinfected = numinfected/numscreen +femaleinfected <- subset(infected, gender == "female") +numfemaleinfected = nrow(femaleinfected) +print(numfemaleinfected) +print(nummaleinfected) +print(numinfected) +ggplot() + geom_histogram(data=infected, aes(x=age,color="red"), binwidth = 1) +theme_classic() +} +summarizeData("allData.csv") +source(supportingFunctions.R) +#Initialize ggplot2 library(ggplot2) -ggplot(mpg, aes(x=cyl, y=displ)) + -stat_summary(geom="bar", fun="mean") + -stat_summary(geom="errorbar", fun.data = "mean_se", width=0.3) + -ylab("Displacement (liters)") + -xlab("Cylinders") + -theme_bw() -library(ggplot2) -oxygen <- read.table(Oxygen.txt, header= T, setp = "/t") -oxygen <- read.table(Oxygen.txt, header= T, sep = "/t") -oxygen <- read.table("Oxygen.txt", header= T, sep = "/t") -oxygen <- read.table("Oxygen.txt", header= T, sep = "/t", stringsAsFactors=FALSE) -oxygen <- read.table("Oxygen.txt", header= T, sep = "\t", stringsAsFactors=FALSE) -oxygen -ggplot(oxygen, aes(x = o2, y = relflor)) -ggplot(oxygen, aes(x = o2, y = relflor)) + geom_point()+ -data <- read.table("data.txt", header= T, sep = ",", stringsAsFactors=FALSE) -data <- read.table("data.txt", header= T, sep = ",", stringsAsFactors=FALSE) -ggplot(oxygen, aes(x = o2, y = relflor)) + geom_point() +x_lab("Oxygen (%)")+y_lab("Relative Fluorescence") -ggplot(oxygen, aes(x = o2, y = relflor)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence") -ggplot(oxygen, aes(x = O2, y = Fo.F)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence") -ggplot(oxygen, aes(x = O2, y = Fo.F)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+geom_density()+theme_classic() -ggplot(data=oxygen, aes(x = O2, y = Fo.F)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+geom_density()+theme_classic() -oxygen -ggplot(data=oxygen, aes(x = O2., y = Fo.F)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+geom_density()+theme_classic() -oxygen <- read.table("Oxygen.txt", header= T, sep = "\t", stringsAsFactors=FALSE) -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+geom_density()+theme_classic() -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic() -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() + geome_smooth(se =F, method='lm')+xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic() -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+stat_smooth(method="lm")+theme_classic() -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic()+geom_smooth(se=F,method="lm") -ggplot(data=data, aes(x = region, y = observations)) + geom_scatterplot()+ geom_jitter() +xlab("Region")+ylab("Observations")+theme_classic() -ggplot(data=data, aes(x = region, y = observations)) + geom_point()+ geom_jitter() +xlab("Region")+ylab("Observations")+theme_classic() -ggplot(data=data, aes(x = region, y = observations)) + geom_point()+ geom_jitter() +xlab("Region")+ylab("Observations") -+theme_classic() -ggplot(data=data, aes(x = region, y = observations)) + geom_point()+ geom_jitter() +xlab("Region")+ylab("Observations")+theme_classic() -ggplot(data=data, aes(x = region, y = observations)) + geom_bar(position="dodge",stat="summary",fun= "mean")+ +xlab("Region")+ylab("Observations")+theme_classic() -ggplot(data=data, aes(x = region, y = observations)) + geom_bar(position="dodge",stat="summary",fun= "mean") +xlab("Region")+ylab("Observations")+theme_classic() -setwd("/Users/elias/Downloads") -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic()+geom_smooth(se=F,method="lm") -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic()+geom_smooth(method="lm") -se=F, -ggplot(data=oxygen, aes(x = O2, y = RF)) + geom_point() +xlab("Oxygen (%)")+ylab("Relative Fluorescence")+theme_classic()+geom_smooth(se=F,method="lm") -# -ggplot(data=data, aes(x = region, y = observations)) + geom_point()+ geom_jitter() +xlab("Region")+ylab("Observations")+theme_classic() -# -ggplot(data=data, aes(x = region, y = observations)) + geom_point()+ geom_jitter() +theme_classic() -#Load bar cha -ggplot(data=data, aes(x = region, y = observations)) + geom_bar(position="dodge",stat="summary",fun= "mean") +xlab("Region")+ylab("Observations")+theme_classic() -#Load bar cha -ggplot(data=data, aes(x = region, y = observations)) + geom_bar(position="dodge",stat="summary",fun.y= "mean") +xlab("Region")+ylab("Observations")+theme_classic() -target <- sample(1:100,1) -target <- sample(1:100,1) -target <- sample(1:100,1) -print("I'm thinking of a number 1-100...") -for (i in 1:11) { -guess<-readline("Guess:") -if(guess> target){ -print("Lower") -} -elif (guess target){ -print("Lower") -} -elif (guess target){ -print("Lower") -} -elif (guesstarget){ -print("Lower") -} -elif (guesstarget){ -print("Lower") -}elif (guesstarget){ -print("Lower") -}elif(guesstarget){ -print("Lower") -}else if(guesstarget){ -print("Lower") -}else if(guesstarget){ -print("Lower") -}else if(guesstarget){ -print("Lower") -}else if(guesstarget){ -print("Lower") -}else if(guesstarget){ -print("Lower") -}else if(guess 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +infected2 <- data2(all1, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +ggplot() + geom_histogram(data=infected, aes(x=dayofYear,color="red"), binwidth = 1) +theme_classic() +ggplot() + geom_histogram(data=infected, aes(x=dayofYear,color="blue"), binwidth = 1) +theme_classic() +} +summarizeData("countryY") #Set Working Directory setwd("/Users/elias/Downloads/Rproject") -dir("countryY") -compileCSV<- function(directory){ -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -write.table(data2, file = (paste(directory,"all_Data.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",") -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==TRUE){ -write.table(data2, file = (paste(directory,"all_Data.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"all_Data.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",") -} -else{ -first = FALSE -write.table(data2, file = (paste(directory,"all_Data.csv", sep ="/")), append =F, row.names = F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -dir("countryY") -data2 <- read.csv(paste("countryY","screen_122.csv", sep ="/")) -data2 -write.table(data2, file = (paste(countryY,"allData.csv", sep ="/")), append =F, row.names = F, col.names = T, sep = ",") -write.table(data2, file = (paste("countryY","allData.csv", sep ="/")), append =F, row.names = F, col.names = T, sep = ",") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",") -} -else{ -first = FALSE -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =F, row.names = F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -data2 -write.table(data2, file = (paste("countryY","allData.csv", sep ="/")), append =F, row.names = F, col.names = T, sep = ",") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",") -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = T, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = T, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"/", "allData.csv")), append =T, row.names = F, col.names = T, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"/","allData.csv")), quote=F, row.names=F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV("countryY") -dir("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = T, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = T, sep = ",", strings) -} -else{ -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/")), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} +#Initialize ggplot2 +library(ggplot2) +source("supportingFunctions.R") +summarizeData("countryY") +convertDelimiter("countryY") compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep ="/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"/allData.csv")), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} +compileCSV("countryX") compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.csv(data2, file = (paste(directory,"allData.csv", sep ="/" )), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,"allData.csv", sep ="/")), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = (paste(directory,"allData.csv", sep ="/" )), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -destination = "allData.csv" -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = (paste(directory,destination, sep ="/")), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = (paste(directory,destination, sep ="/" )), quote=F, row.names=F, col.names = T, sep = ",") +compileCSV("countryX") +timeDistribution("countryY/allData.csv","countryX/allData.csv") +source("supportingFunctions.R") +timeDistribution("countryY/allData.csv","countryX/allData.csv") +timeDistribution("countryY/allData.csv","countryX/allData.csv") +timeDistribution <- function(file1, file2){ +data1 <- read.csv(file1) +data2<- read.csv(file2) +infected1 <- data1(all1, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +infected2 <- data2(all2, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +ggplot() + geom_histogram(data=infected1, aes(x=dayofYear,color="red"), binwidth = 1) +theme_classic() +ggplot() + geom_histogram(data=infected2, aes(x=dayofYear,color="blue"), binwidth = 1) +theme_classic() +} +timeDistribution("countryY/allData.csv","countryX/allData.csv") +timeDistribution("countryY/allData.csv","countryX/allData.csv") +timeDistribution <- function(file1, file2){ +data1 <- read.csv(file1) +data2 <- read.csv(file2) +infected1 <- subset(data1, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +infected2 <- subset(data2, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0| age <122) +ggplot() + geom_histogram(data=infected1, aes(x=dayofYear,color="red"), binwidth = 1) +theme_classic() +ggplot() + geom_histogram(data=infected2, aes(x=dayofYear,color="blue"), binwidth = 1) +theme_classic() +} +timeDistribution("countryY/allData.csv","countryX/allData.csv") +markerDistribution <- function(file1, file2){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +} +timeDistribution("countryY/allData.csv","countryX/allData.csv") +timeDistribution("countryY/allData.csv","countrY/allData.csv") +timeDistribution("countryY/allData.csv","countryY/allData.csv") +timeDistribution("countryX/allData.csv","countryX/allData.csv") +timeDistribution("countryX/allData.csv","countryX/allData.csv") +timeDistribution("countryX/allData.csv","countryX/allData.csv") +timeDistribution("countryY/allData.csv","countryY/allData.csv") +firstInfection <- function(file){ +data <- read.csv(file) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) } -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = paste(directory,"allData.csv", sep ="/" ), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") dir("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -convertDelimiter("countryY") -convertDelimiter<- function(directory){ -filedir <- dir(path = directory, pattern = ".txt") -for(i in filedir){ -data <- read.table(paste(directory,i, sep ="/" ), header = T, sep = "") -write.csv(data, file = paste(directory, sub(".txt",".csv", i), sep ="/"), quote=F, row.names=F, sep = ",") -file.remove(paste(directory,i, sep ="/" )) -} -} -convertDelimiter("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ +firstInfection("countryY/screen_120.csv") +firstInfection("countryY/allData.csv") +firstInfection <- function(file){ +data <- read.csv(file) +infected <- subset(data, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +numinfected <- nrow(infected) +print(numinfected) +} +firstInfection("countryY/allData.csv") +firstInfection("countryY/screen_120.csv") +firstInfection <- function(file){ +data <- read.csv(file) +infected <- subset(data, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +firstinfection <- min(infected$dayofYear) +print(firstinfection) +} +firstInfection("countryY/screen_120.csv") +firstInfection("countryY/allData.csv") +firstInfection("countryX/allData.csv") +markerDistribution <- function(file1){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(marker01, marker02, marker03, marker04, marker05, marker06, marker07, marker08, marker09, marker10) +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +markerDistribution <- function(file1){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(marker01, marker02, marker03, marker04, marker05, marker06, marker07, marker08, marker09, marker10), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +} +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(marker01, marker02, marker03, marker04, marker05, marker06, marker07, marker08, marker09, marker10), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +ggplot(data = df, aes(x=marker, y= count))+geom_bar() +} +markerDistribution("countryX/allData.csv") +markerDistribution("countryX/allData.csv") +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +ggplot(data = df, aes(x=marker, y= count))+geom_bar() +} +markerDistribution("countryX/allData.csv") +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot(data = df, aes(x=marker, y= count))+geom_bar() +} +markerDistribution("countryX/allData.csv") +ggplot()+geom_bar(data = df, aes(x=marker, y= count)) +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot()+geom_bar(data = df, aes(x=marker, y= count)) +} +markerDistribution("countryX/allData.csv") +ggplot()+geom_bar(data = df, aes(x=marker, y= count, color =red))+theme_classic() +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot()+geom_bar(data = df, aes(x=marker, y= count, color =red))+theme_classic() +} +markerDistribution("countryX/allData.csv") +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot(df, aes(x=marker))+geom_bar(aes(y= count, color =red))+theme_classic() +} +markerDistribution("countryX/allData.csv") +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat=summary)+theme_classic() +} +markerDistribution("countryX/allData.csv") +ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat="summary")+theme_classic() +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +print(df) +ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat="summary")+theme_classic() +} +markerDistribution("countryX/allData.csv") +#This function summarizes the data of a file +#Provides total number of screens as well as the percent of patients infected +#As well as the number of patients infected by sex and percent of patients infected by sex +#In addition a graph of the patient age distribution +summarizeData<- function(file){ +data <- read.csv(file) +#Removes unrealistic data of patients older than 122, as some patients were reported to be over 400 years old +all <- subset(data, age<122) +#Total number of rows is equal to the number of screens +numscreen <- nrow(all) +#Subsets the data for patients with a single marker present in any of the markers +infected <- subset(all, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +#Total number of rows is equal to the number of infected +numinfected <- nrow(infected) +#Number screened by gender +nummalescreen <-nrow(subset(all, gender == "male")) +numfemalescreen <-nrow(subset(all, gender == "female")) +#Number of infected by gender +nummaleinfected <- nrow(subset(infected, gender == "male")) +numfemaleinfected <- nrow(subset(infected, gender == "female")) +#Percent infected +percentinfected = numinfected/numscreen +malepercentinfected = nummaleinfected/nummalescreen +femalepercentinfected = numfemaleinfected/numfemalescreen +#Print functions +print(paste("Percent of patients screened", numscreen, "with an infection rate of", percentinfected)) +print(paste("Percent of male patients screened", numscreen, "with an infection rate of", malepercentinfected)) +print(paste("Percent of female patients screened", numscreen, "with an infection rate of", femalepercentinfected)) +#Histogram of infected patients by age +ggplot() + geom_histogram(data=infected, aes(x=age,color="red"), binwidth = 1) +theme_classic() +} +#Determines the date of first infection for a given country from summary data +firstInfection <- function(file){ +data <- read.csv(file) +#Subsets the data for patients with a single marker present in any of the markers +infected <- subset(data, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) +print(min(infected$dayofYear)) +} +#In which country (X or Y) did the disease outbreak likely begin? +firstInfection("countryY/allData.csv") +firstInfection("countryX/allData.csv") +markerDistribution("countryY/allData.csv") +markerDistribution("countryX/allData.csv") +markerDistribution("countryX/allData.csv") +markerDistribution("countryX/allData.csv") +markerDistribution("countryY/allData.csv") +("countryX/allData.csv") +markerDistribution("countryX/allData.csv") +markerDistribution("countryY/allData.csv") +summarizeData(allData.csv) +summarizeData("allData.csv") +summarizeData("allData.csv") +source("supportingFunctions.R") +summarizeData("allData.csv") +#Compiles all .csv files in a single directory +#The user has 3 options in NA choice, remove rows with NAs through removeNA, include NAs but be warned of their presence through warnNA, or include NAs without warning through ignoreNA +compileCSV<- function(directory, choice){ +#Deletes the output file in the event that it already exists +file.remove(paste(directory, "allData.csv", sep = "/")) +#Used to define the first addition to a file which will be later changed to FALSE first = TRUE +#Object with all .csv files in the directory filedir <- dir(path = directory, pattern = ".csv") +if(choice == "warnNA"){ print("Warning this summary data may contain NAs")} +#Loops through all .csv files in the directory for(i in filedir){ +#Stores the data in .csv files as temporary value data2 <- read.csv(paste(directory,i, sep = "/")) +#Remove NAs if choice is removeNA +if(choice=="removeNA"){ data <- na.omit(data2)} +#Coverts directory name(ex. countryX) to indenity (ex. X) +country <- gsub("country","", directory) +#Replicates country identity for the number of rows in the directory +country <- rep(country, nrow(data2)) +#Adds a column with country identity to data +data2 <- cbind(data2, country) +#Removes all non-numerical characters from file name +dayofYear <- gsub("[^0-9]", "", i) +#Replicates date for the number of rows in the directory +dayofYear <- rep(dayofYear, nrow(data2)) +#Adds a column with date to data +data2 <- cbind(data2, dayofYear) +#If this isn't the first entry then column names will be excluded if(first==FALSE){ -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = T, sep = ",", strings) +write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = F, sep = ",") } +#If this is the first entry then column names will be included else{ first = FALSE -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV<- function(directory){ -first = TRUE -filedir <- dir(path = directory, pattern = ".csv") -for(i in filedir){ -data2 <- read.csv(paste(directory,i, sep = "/")) -if(first==FALSE){ -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append =T, row.names = F, col.names = F, sep = ",", strings) -} -else{ -first = FALSE -write.table(data2, file = paste(directory,"allData.csv", sep ="/"), quote=F, row.names=F, col.names = T, sep = ",") -} -} -} -compileCSV("countryY") -compileCSV("countryY") -data2 <- read.csv(paste("countryY","/","screen_122.csv", sep ="")) -write.table(data2, file = paste("countryY","allData.csv", sep ="/"), append = F, row.names = F, col.names = T, sep = ",") +write.table(data2, file = paste(directory,"allData.csv", sep ="/"), append = F, row.names=F, col.names = T, sep = ",") +} +} +} +source("supportingFunctions.R") +#Compiles the CSV data for each country into a file allData.csv for future analysis +compileCSV("countryY", "ignoreNA") +#Compiles the CSV data for each country into a file allData.csv for future analysis +compileCSV("countryY", "warnNA") +compileCSV("countryX", "ignoreNA") +compileCSV("countryX", "warnNA") +#Compiles the CSV data for each country into a file allData.csv for future analysis +compileCSV("countryY", "removeNA") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +#Provides the number of markers present by marker for a given country from summary data +markerDistribution <- function(file){ +data <- read.csv(file) +all <- subset(data, age<122) +#Creates a dataframe with the markers 1,10 and corresponding total marker count +df <- data.frame(marker = c(seq.int(1,10,by =1)), +count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) +#bar chart of marker distribution +ggplot(data = df, aes(x=marker, y = count)) + geom_bar(fill = "blue")+theme_classic() +} +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +#Country X has extremely high levels of markers 1-5 +markerDistribution("countryX/allData.csv") +#Country X has extremely high levels of markers 1-5 +markerDistribution("countryX/allData.csv") +source("supportingFunctions.R") +#Country X has extremely high levels of markers 1-5 +markerDistribution("countryX/allData.csv") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +source("supportingFunctions.R") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +source("supportingFunctions.R") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +compileCSV("countryX", "removeNA") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") +#Country X has extremely high levels of markers 1-5 +markerDistribution("countryX/allData.csv") +#If Country Y develops a vaccine for the disease, it it likely to work for Country X? +#Country Y has high levels of markers 6 & 7, with slightly lower levels of markers 7-10 +#and moderate levels of markers 4&5 with nearly no levels of markers 1-3 +markerDistribution("countryY/allData.csv") diff --git a/analysis.R b/analysis.R index e0775a6..2f6caa2 100644 --- a/analysis.R +++ b/analysis.R @@ -4,15 +4,16 @@ setwd("/Users/elias/Downloads/Rproject") #Initialize ggplot2 library(ggplot2) +#Accesses supporting functions source("supportingFunctions.R") #covnerts all .txt files into comma delimited .csv files for countryY convertDelimiter("countryY") -#Compiles the CSV data for each country into a file allData.csv for future analysis -compileCSV("countryY") -compileCSV("countryX") +#Compiles the CSV data for each country into a file allData.csv for future analysis with NAs removed +compileCSV("countryY", "removeNA") +compileCSV("countryX", "removeNA") #In which country (X or Y) did the disease outbreak likely begin? #The first infection for country Y is 139 diff --git a/supportingFunctions.R b/supportingFunctions.R index 62ff31d..d800289 100644 --- a/supportingFunctions.R +++ b/supportingFunctions.R @@ -17,18 +17,22 @@ convertDelimiter<- function(directory){ } } #Compiles all .csv files in a single directory -compileCSV<- function(directory){ +#The user has 3 options in NA choice, remove rows with NAs through removeNA, include NAs but be warned of their presence through warnNA, or include NAs without warning through ignoreNA +compileCSV<- function(directory, choice){ #Deletes the output file in the event that it already exists file.remove(paste(directory, "allData.csv", sep = "/")) #Used to define the first addition to a file which will be later changed to FALSE first = TRUE #Object with all .csv files in the directory filedir <- dir(path = directory, pattern = ".csv") - + if(choice == "warnNA"){ print("Warning this summary data may contain NAs")} #Loops through all .csv files in the directory for(i in filedir){ #Stores the data in .csv files as temporary value data2 <- read.csv(paste(directory,i, sep = "/")) + #Remove NAs if choice is removeNA + if(choice=="removeNA"){ data <- na.omit(data2)} + #Coverts directory name(ex. countryX) to indenity (ex. X) country <- gsub("country","", directory) #Replicates country identity for the number of rows in the directory @@ -99,7 +103,7 @@ markerDistribution <- function(file){ df <- data.frame(marker = c(seq.int(1,10,by =1)), count = c(sum(all$marker01),sum(all$marker02),sum(all$marker03),sum(all$marker04),sum(all$marker05),sum(all$marker06),sum(all$marker07),sum(all$marker08),sum(all$marker09),sum(all$marker10))) #bar chart of marker distribution - ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat="summary")+theme_classic() + ggplot(data = df, aes(x=marker, y = count)) + geom_bar(stat= "identity")+theme_classic() } #Determines the date of first infection for a given country from summary data @@ -107,7 +111,8 @@ firstInfection <- function(file){ data <- read.csv(file) #Subsets the data for patients with a single marker present in any of the markers infected <- subset(data, marker01 > 0 | marker02 > 0 | marker03 > 0 | marker04 > 0 | marker05 > 0 | marker06 > 0 | marker07 > 0 | marker08 > 0 | marker09 > 0 | marker10 > 0) - print(min(infected$dayofYear)) + #prints the minimum value of day of year to represent the first infection + print(min(infected$dayofYear)) }