Difference between revisions of "Main Page/Research/MSB/Scripts/conflate timestamp.R"
From phurvitz
Phil Hurvitz (talk | contribs) |
Phil Hurvitz (talk | contribs) m (User:Phil Hurvitz/Projects/In process/MSB/Data processing/data processing scripts/conflate timestamp.R moved to Main Page/Research/MSB/Scripts/conflate timestamp.R) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
# a function | # a function | ||
− | + | timestamp.match <- function(indir, minutes.offset=10) { | |
# offset for matching tolerance | # offset for matching tolerance | ||
Line 37: | Line 37: | ||
# fix the new column name | # fix the new column name | ||
− | + | colnames(my.experience)[ncol(my.experience)] <- "msb.seconds" | |
+ | |||
+ | # output | ||
+ | output.file = paste(indir, "myexp_ts.csv", sep="/") | ||
+ | write.table(my.experience, file=output.file, row.names=F, col.names=F, sep=",", quote=F) | ||
+ | |||
+ | # function return | ||
return(my.experience) | return(my.experience) | ||
} | } | ||
</pre> | </pre> |
Latest revision as of 17:17, 27 January 2009
# timestamp fuzzy match # finds the closest match for timestamp + subject. # adds the seconds.msb field to the MyExperience table # a function timestamp.match <- function(indir, minutes.offset=10) { # offset for matching tolerance seconds.offset <- minutes.offset * 60 # read in the data sets # phone log (from processing of the mailman logs in read.msb_files.3.R phone.log.file <- paste(indir, "phone_log.csv", sep="") phone.log <- read.csv(phone.log.file, stringsAsFactors=F) my.experience.file <- paste(indir, "myexper.csv", sep="") my.experience <- read.csv(my.experience.file, stringsAsFactors=F) # process each record in the phone log file for (i in 1:nrow(phone.log)) { # get the timestamp from the current record timestamp <- as.POSIXct(phone.log[i,6]) # get the MSB seconds value from the current record msb.seconds <- as.numeric(phone.log[i,3]) # get the subject number from the current record subject.num <- phone.log$subject.num[i] # create a T/F vector indicating which record in the MyExperience file # is within 10 minutes of the current phonelog timestamp AND # has the same subject ID time.match <- ((my.experience$date.phone > (timestamp - seconds.offset)) & (my.experience$date.phone < (timestamp + seconds.offset)) & (my.experience$sid == subject.num)) # set the MSB seconds for the record that matches from the T/F matrix my.experience[time.match,12] <- msb.seconds } # fix the new column name colnames(my.experience)[ncol(my.experience)] <- "msb.seconds" # output output.file = paste(indir, "myexp_ts.csv", sep="/") write.table(my.experience, file=output.file, row.names=F, col.names=F, sep=",", quote=F) # function return return(my.experience) }