library(tidyverse) #load in the data, keep the columns we want, and clean the data load.subj.data <- function(prefix, subject, match_response, use_exp3=FALSE) { subj.data = read.subj.csv(sprintf("%s%02d_Test.csv", prefix, subject)) begin_rows <- filter(subj.data, trigger == "BEGIN_TRIAL") end_rows <- filter(subj.data, trigger == "END_TRIAL") begin_rows$response <- end_rows$word subj.data <- select(begin_rows, trial, word, color, response) tStart <- strptime(as.character(begin_rows$time), "%Y.%m.%d-%H.%M.%OS") tStop <- strptime(as.character(end_rows$time), "%Y.%m.%d-%H.%M.%OS") options(digits.secs = 3) subj.data$rt <- as.numeric(tStop - tStart) subj.data$match <- subj.data$word == subj.data$color if (match_response == "RIGHT") { nonmatch_response = "LEFT" } else { nonmatch_response = "RIGHT" } subj.data$correct_response <- match_response subj.data$correct_response[subj.data$word != subj.data$color] <- nonmatch_response # Make a variable for correct/incorrect trial subj.data$correct <- (subj.data$match == 1 & subj.data$response == match_response) | (subj.data$match == 0 & subj.data$response == nonmatch_response) if (!use_exp3) { subj.data$hand <- "LEFT" subj.data$hand[subj.data$word >= 3] = "RIGHT" subj.data$hand <- as.factor(subj.data$hand) } else { subj.data$space <- "NONE" subj.data$space[subj.data$word == 0 | subj.data$word == 1] <- "LEFT" subj.data$space[subj.data$word == 2 | subj.data$word == 3] <- "BOTH" subj.data$space[subj.data$word == 4 | subj.data$word == 5] <- "RIGHT" subj.data$space <- as.factor(subj.data$space) subj.data$hand <- "NONE" subj.data$hand[subj.data$word == 0 | subj.data$word == 4 | subj.data$word == 2] = "LEFT" subj.data$hand[subj.data$word == 3 | subj.data$word == 1 | subj.data$word == 5] = "RIGHT" subj.data$hand <- as.factor(subj.data$hand) } subj.data$word <- as.factor(subj.data$word) subj.data$color <- as.factor(subj.data$color) subj.data$subject <- as.factor(subject) return(subj.data) } read.subj.csv <- function(filename) { subj.data <- read.csv(filename, stringsAsFactors = FALSE, header = FALSE) subj.data <- subj.data[,c(1,2,4,5,6,7)] colnames(subj.data) <- c("time", "line", "trigger", "trial", "word", "color") return(subj.data) } preprocess.data <- function(exp.data) { z <- exp.data$rt for (subject in unique(exp.data$subject)) { index <- exp.data$subject == subject z[index] <- (exp.data[index,]$rt - mean(exp.data[index,]$rt)) / sd(exp.data[index,]$rt) } exp.data <- subset(exp.data, abs(z) < 2.5) exp.data <- subset(exp.data, match == TRUE) exp.data <- subset(exp.data, correct == TRUE) exp.data$word <- as.numeric(exp.data$word) exp.data$color <- as.numeric(exp.data$color) return(exp.data) } # ------------------------------------------------------------------------------------------------------------ # Experiment 1 # Load in all subjects and group them together s014 <- load.subj.data("Exp1/S", 14, "RIGHT") s015 <- load.subj.data("Exp1/S", 15, "RIGHT") s016 <- load.subj.data("Exp1/S", 16, "RIGHT") s017 <- load.subj.data("Exp1/S", 17, "RIGHT") s018 <- load.subj.data("Exp1/S", 18, "RIGHT") s019 <- load.subj.data("Exp1/S", 19, "LEFT") s020 <- load.subj.data("Exp1/S", 20, "LEFT") s021 <- load.subj.data("Exp1/S", 21, "LEFT") s022 <- load.subj.data("Exp1/S", 22, "LEFT") s023 <- load.subj.data("Exp1/S", 23, "LEFT") s024 <- load.subj.data("Exp1/S", 24, "RIGHT") s025 <- load.subj.data("Exp1/S", 25, "RIGHT") s026 <- load.subj.data("Exp1/S", 26, "RIGHT") s027 <- load.subj.data("Exp1/S", 27, "RIGHT") s028 <- load.subj.data("Exp1/S", 28, "RIGHT") s029 <- load.subj.data("Exp1/S", 29, "LEFT") s030 <- load.subj.data("Exp1/S", 30, "LEFT") s031 <- load.subj.data("Exp1/S", 31, "LEFT") s032 <- load.subj.data("Exp1/S", 32, "LEFT") s033 <- load.subj.data("Exp1/S", 33, "LEFT") s034 <- load.subj.data("Exp1/S", 34, "RIGHT") s035 <- load.subj.data("Exp1/S", 35, "RIGHT") s036 <- load.subj.data("Exp1/S", 36, "RIGHT") s037 <- load.subj.data("Exp1/S", 37, "RIGHT") s038 <- load.subj.data("Exp1/S", 38, "RIGHT") s039 <- load.subj.data("Exp1/S", 39, "LEFT") s040 <- load.subj.data("Exp1/S", 40, "LEFT") exp1 <- rbind(s014, s015, s016, s017, s018, s019, s020, s021, s022, s023, s024, s025, s026, s027, s028, s029, s030, s031, s032, s033, s034, s035, s036, s037, s038, s039, s040) # Remove outliers and only keep match trials and correct trials exp1.pre <- preprocess.data(exp1) write.csv(exp1.pre, "experiment1.csv", row.names=FALSE) # ------------------------------------------------------------------------------------------------------------ # Experiment 2 # Load in subjects t01 <- load.subj.data("Exp2/T", 1, "RIGHT") t02 <- load.subj.data("Exp2/T", 2, "RIGHT") t03 <- load.subj.data("Exp2/T", 3, "RIGHT") t05 <- load.subj.data("Exp2/T", 5, "LEFT") t07 <- load.subj.data("Exp2/T", 7, "LEFT") t08 <- load.subj.data("Exp2/T", 8, "LEFT") t10 <- load.subj.data("Exp2/T", 10, "RIGHT") t11 <- load.subj.data("Exp2/T", 11, "RIGHT") t12 <- load.subj.data("Exp2/T", 12, "RIGHT") t13 <- load.subj.data("Exp2/T", 13, "RIGHT") t14 <- load.subj.data("Exp2/T", 14, "RIGHT") t15 <- load.subj.data("Exp2/T", 15, "LEFT") t16 <- load.subj.data("Exp2/T", 16, "LEFT") t17 <- load.subj.data("Exp2/T", 17, "LEFT") t18 <- load.subj.data("Exp2/T", 18, "LEFT") t19 <- load.subj.data("Exp2/T", 19, "LEFT") t20 <- load.subj.data("Exp2/T", 20, "LEFT") t21 <- load.subj.data("Exp2/T", 21, "RIGHT") t23 <- load.subj.data("Exp2/T", 23, "RIGHT") t24 <- load.subj.data("Exp2/T", 24, "LEFT") t25 <- load.subj.data("Exp2/T", 25, "RIGHT") t26 <- load.subj.data("Exp2/T", 26, "LEFT") t27 <- load.subj.data("Exp2/T", 27, "LEFT") t28 <- load.subj.data("Exp2/T", 28, "LEFT") t29 <- load.subj.data("Exp2/T", 29, "LEFT") t30 <- load.subj.data("Exp2/T", 30, "LEFT") exp2 <- rbind(t01, t02, t03, t05, t07, t08, t10, t11, t12, t13, t14, t15, t16, t17, t18, t19, t20, t21, t23, t24, t25, t26, t27, t28, t29, t30) exp2.pre <- preprocess.data(exp2) write.csv(exp2.pre, "experiment2.csv", row.names=FALSE) # ------------------------------------------------------------------------------------------------------------ # Experiment 2 # Load in subjects s06 <- load.subj.data("Exp3/SVM", 6, "RIGHT", TRUE) s07 <- load.subj.data("Exp3/SVM", 7, "RIGHT", TRUE) s08 <- load.subj.data("Exp3/SVM", 8, "RIGHT", TRUE) s09 <- load.subj.data("Exp3/SVM", 9, "RIGHT", TRUE) s10 <- load.subj.data("Exp3/SVM", 10, "RIGHT", TRUE) s11 <- load.subj.data("Exp3/SVM", 11, "LEFT", TRUE) s12 <- load.subj.data("Exp3/SVM", 12, "LEFT", TRUE) s13 <- load.subj.data("Exp3/SVM", 13, "LEFT", TRUE) s14 <- load.subj.data("Exp3/SVM", 14, "LEFT", TRUE) s15 <- load.subj.data("Exp3/SVM", 15, "LEFT", TRUE) s16 <- load.subj.data("Exp3/SVM", 16, "RIGHT", TRUE) s17 <- load.subj.data("Exp3/SVM", 17, "RIGHT", TRUE) s18 <- load.subj.data("Exp3/SVM", 18, "RIGHT", TRUE) s19 <- load.subj.data("Exp3/SVM", 19, "RIGHT", TRUE) s20 <- load.subj.data("Exp3/SVM", 20, "LEFT", TRUE) s21 <- load.subj.data("Exp3/SVM", 21, "RIGHT", TRUE) s22 <- load.subj.data("Exp3/SVM", 22, "LEFT", TRUE) s24 <- load.subj.data("Exp3/SVM", 24, "LEFT", TRUE) s25 <- load.subj.data("Exp3/SVM", 25, "LEFT", TRUE) s26 <- load.subj.data("Exp3/SVM", 26, "RIGHT", TRUE) s27 <- load.subj.data("Exp3/SVM", 27, "RIGHT", TRUE) s28 <- load.subj.data("Exp3/SVM", 28, "RIGHT", TRUE) s29 <- load.subj.data("Exp3/SVM", 29, "RIGHT", TRUE) s30 <- load.subj.data("Exp3/SVM", 30, "RIGHT", TRUE) s31 <- load.subj.data("Exp3/SVM", 31, "LEFT", TRUE) s32 <- load.subj.data("Exp3/SVM", 32, "LEFT", TRUE) s33 <- load.subj.data("Exp3/SVM", 33, "LEFT", TRUE) s34 <- load.subj.data("Exp3/SVM", 34, "LEFT", TRUE) s35 <- load.subj.data("Exp3/SVM", 35, "LEFT", TRUE) s36 <- load.subj.data("Exp3/SVM", 36, "LEFT", TRUE) s37 <- load.subj.data("Exp3/SVM", 37, "RIGHT", TRUE) s38 <- load.subj.data("Exp3/SVM", 38, "LEFT", TRUE) s39 <- load.subj.data("Exp3/SVM", 39, "RIGHT", TRUE) s40 <- load.subj.data("Exp3/SVM", 40, "RIGHT", TRUE) s42 <- load.subj.data("Exp3/SVM", 42, "LEFT", TRUE) s43 <- load.subj.data("Exp3/SVM", 43, "LEFT", TRUE) s44 <- load.subj.data("Exp3/SVM", 44, "LEFT", TRUE) s45 <- load.subj.data("Exp3/SVM", 45, "LEFT", TRUE) s46 <- load.subj.data("Exp3/SVM", 46, "LEFT", TRUE) s47 <- load.subj.data("Exp3/SVM", 47, "RIGHT", TRUE) s48 <- load.subj.data("Exp3/SVM", 48, "RIGHT", TRUE) s49 <- load.subj.data("Exp3/SVM", 49, "RIGHT", TRUE) s50 <- load.subj.data("Exp3/SVM", 50, "RIGHT", TRUE) exp3 <- rbind(s06, s07, s08, s09, s10, s11, s12, s13, s14, s15, s16, s17, s18, s19, s20, s21, s22, s24, s25, s26, s27, s28, s29, s30, s31, s32, s33, s34, s35, s36, s37, s38, s39, s40, s42, s43, s44, s45, s46, s47, s48, s49, s50) exp3.pre <- preprocess.data(exp3) write.csv(exp3.pre, "experiment3.csv", row.names=FALSE)