PennController for IBEX › Forums › Support › Eyetracking R script variations › Reply To: Eyetracking R script variations
June 1, 2023 at 7:56 am
#10655
Participant
IF this is too confusing, I can send through email.
read.pcibex <- function(filepath, auto.colnames=TRUE, fun.col=function(col,cols){cols[cols==col]<-paste(col,"Ibex",sep=".");return(cols)}) {
n.cols <- max(count.fields(filepath,sep=",",quote=NULL),na.rm=TRUE)
if (auto.colnames){
cols <- c()
con <- file(filepath, "r")
while ( TRUE ) {
line <- readLines(con, n = 1, warn=FALSE)
if ( length(line) == 0) {
break
}
m <- regmatches(line,regexec("^# (\\d+)\\. (.+)\\.$",line))[[1]]
if (length(m) == 3) {
index <- as.numeric(m[2])
value <- m[3]
if (is.function(fun.col)){
cols <- fun.col(value,cols)
}
cols[index] <- value
if (index == n.cols){
break
}
}
}
close(con)
return(read.csv(filepath, comment.char="#", header=FALSE, col.names=cols))
}
else{
return(read.csv(filepath, comment.char="#", header=FALSE, col.names=seq(1:n.cols)))
}
}
require("dplyr")
require("ggplot2")
require("tidyr")
# The URL where the data is stored; note the ?experiment= at the end
ETURL = "https://psyli-lab.research-zas.de/eye-tracking_full_ger/eye-tracking_full_ger_results/php_full_ger.php?experiment="
# Time-window to bin the looks
BIN_DURATION = 100
# We'll use Reception time to identify individual sessions
results <- read.pcibex("~/Results online study/full_ger_pcibex_june/results.csv")
names(results)[1] <- 'Participant'
#write.csv(results, file = 'results_clean_RStudio2.csv',
# row.names = FALSE)
# Read ET data file for each session and append output to ETdata (first 5 rows are corrupt)
ETdata = data.frame()
filesDF_bak <- subset(results, Parameter=="Filename"&displayID=="p10a") #tried to change the display ID to setnence but still showed p10a displayID for all
filesDF <- filesDF_bak[6:nrow(filesDF_bak),]
apply(filesDF, 1, function(row) {
data <- read.csv(paste(ETURL,as.character(row[['Value']]),sep=''))
data$Participant <- row[['Participant']]
data$displayID <- row[['displayID']] ##added this later and it showed the display id but only p10a for all
datacheck <<- data
ETdata <<- rbind(ETdata,data)
})