Skip to content

Instantly share code, notes, and snippets.

@oganm
Created April 2, 2017 19:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save oganm/fecd0bc9871c0c40a081df19c14e1fc3 to your computer and use it in GitHub Desktop.
Save oganm/fecd0bc9871c0c40a081df19c14e1fc3 to your computer and use it in GitHub Desktop.
#!/usr/bin/env Rscript
library(magrittr)
library(reshape2)
d <- read.csv("FINAL LAB DATA Mar 23 2017.csv", colClasses="character", fileEncoding = "UTF-8-BOM")
d <- d[order(d$ID),]
# assign each visit a number (per patient)
visit.numbers <- tapply(d$Collection.Date, d$ID, function (x)
as.integer(as.factor(x)))
visit.numbers <- visit.numbers[match(names(visit.numbers), unique(d$ID))]
d$Visit.Number <- unlist(visit.numbers)
# make columns for visit dates
visits <- dcast(d, ID~Visit.Number, value.var="Collection.Date", fun.aggregate=head, 1, fill="")
colnames(visits)[2:ncol(visits)] <- paste0(colnames(visits)[2:ncol(visits)], "_Collection.Date")
# make columns for test values
tests <- dcast(d, ID~Visit.Number+Lab.Type, value.var="Value", fun.aggregate=head, 1, fill="")
# merge visit dates with test values
pdata <- merge(visits, tests)
# save the file
write.csv(pdata, "out.csv", row.names=FALSE)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment