Este ejercicio acompaña a la guía de la sesión 3 sobre pipeline, importación y guardado e integra los contenidos de las sesiones 1 y 2.
El objetivo del ejercicio 3 es obtener el promedio de tiempos de reacción y tasa de aciertos en un conjunto de tareas de un participante (normalmente esto se repitiría para cada participante). Para ello comenzamos con el procesamiento de datos desde los datos crudos y terminamos con el guardado del entorno de trabajo.
El data set proviene de un estudio sobre adquisición de la lectura, con las siguientes tareas:
Cada fila corresponde a un ensayo, y cada columna a una variable. Para cada ensayo se muestra a qué tarea corresponde en la columna task, el tiempo de respuesta en la columna RT (en segundos, el separador decimal es el punto) y el acierto en la columna acierto. Los datos del archivo corresponden a un solo participante.
Completar las siguientes tareas:
Previo: Descargar el archivo datos045177.csv en la carpeta cursoR
Cambiar el path a la carpeta cursoR con la función setwd.
Leer el archivo en R con la función read.table y guardarlo en una variable llamada datosCrudos.
Limpiar outliers de tiempo de reacción en los datos, esto es, quitar aquellos ensayos en que el tiempo de reacción es mayor a la media de todos los ensayos más 3 desvíos estándar, o menor a 200 ms (ver ejercicio 1)
Almacenar las variables del entorno de trabajo en una carpeta “output”" con la función save.image.
Guardar todos los comandos en un script.
# 1)
setwd("C:/Users/Camila/Dropbox/09 R/curso R psico")# 2)
datosCrudos = read.table("datos045177.csv", header = T, dec = ".", sep = ",", encoding = "UTF-8" )# 3)
media = mean(datosCrudos$RT, na.rm = T)
desv = sd(datosCrudos$RT, na.rm = T)
umbralUp = media+3*desv
umbralDown = 0.200
# uso el operador or (|) para evaluar ambos umbrales al mismo tiempo
temp = datosCrudos$RT > umbralUp | datosCrudos$RT < umbralDown
# veo cuántos ensayos tiraría con estos umbrales
sum(temp, na.rm=T)## [1] 57
# los tiro
datosCrudos2 = datosCrudos[!temp,]# 4)
# i)
# veo los nombres de las tareas
levels(datosCrudos2$task)## [1] "blendingP" "blendingS" "lettersN" "lettersS"
## [5] "rhymePW" "rhymeW" "segmentationP" "segmentationS"
## [9] "vocabulary"
# empiezo por la primera
tarea = "blendingP"
# o podría evitar errores de escritura haciendo:
tarea = levels(datosCrudos2$task)[1]
datosBlendingP=datosCrudos2[datosCrudos2$task==tarea,]
# corroboro que hayan quedado solo los ensayos de Blending
View(datosBlendingP)
# ii)
mediaBP.RT = mean(datosBlendingP$RT, na.rm = T)
mediaBP.ac = mean(datosBlendingP$acierto, na.rm = T)
# iii)
# La entrada de la función es el nombre de la tarea de la que quiero obtener las medias
mediasTareas = function(x) {
tarea = x
datosX=datosCrudos2[datosCrudos2$task==tarea,]
mediaX.RT = mean(datosX$RT, na.rm = T)
mediaX.ac = mean(datosX$acierto, na.rm = T)
return(c(mediaX.RT,mediaX.ac))
}# 5) #creo a mano la carpeta output primero
save.image("./output/Medias045177.RData")