Create a gist now

Instantly share code, notes, and snippets.

Excluding MTurk workers who participated in your previous studies: An R solution
############################################################################
# #
# Excluding participants who participated in previous studies #
# By Arnoud Plantinga, based on Gabriele Paolacci's Excel solution #
# #
# Instructions (Note: edit only the non-indented lines): #
# #
# 1. Create a qualification (e.g., "Study 1"; keep in mind that the name #
# will be visible to Workers) in MTurk/Manage/Qualification Types #
# #
# 2. Download from Manage Workers your "WorkerList", i.e., the list of #
# workers who participated in any of your study in the past. This may #
# take some time. #
# #
# 3. Download from MTurk the Results batch of your previous studies #
# (i.e., of the study whose participants you want to exclude). #
# #
# 4. Change the folder (e.g., "C:/Downloads"), name of your #
# workerlist (e.g., "User_394740_workers.csv"), name of your new #
# qualification (e.g., "Study 1") and names of your batches #
# (e.g., "Batch_1921108_batch_results.csv", ...) below #
# #
# 5. Run the script. #
# #
# 6. Upload the newly created file "Workerlist.csv" in the Manage Workers #
# page, and confirm that you want to assign the "Study 1" Qualification #
# to a bunch of workers (the amount should again be equal to the N of #
# your Study 1). #
# #
# 7. When you design your Study 2 HIT, require that the Qualification #
# "Study 1" "is not equal to" "1". People who were assigned that "1" in #
# your WorkerList file will not be able to participate in your study. #
# #
############################################################################
# Load files --------------------------------------------------------------
# Set the folder where your workerlist etc. are stored
setwd("C:/Downloads/")
# Load your workerlist
workerlist <- read.csv("User_394740_workers.csv", check.names=F)
# Name of your new qualification
qualification <- "Study 1"
# Load your previous batches of the studies whose participants you want to
# exclude (add more batches if needed)
batch <- list()
batch[[1]] <- read.csv("Batch_1921108_batch_results.csv")
batch[[2]] <- read.csv("Batch_1921214_batch_results.csv")
# Create list of previous studies -----------------------------------------
# Create a list of workerIDs
workerids <- c()
for (i in 1:length(batch)) {
workerids <- c(workerids, as.character(batch[[i]]$WorkerId))
}
# Update variable ---------------------------------------------------------
workerlist[, paste("UPDATE-", qualification, sep = "")] <-
ifelse(workerlist[, "Worker ID"] %in% workerids, 1, NA)
# Give some feedback
paste("A total of",
table(workerlist[, paste("UPDATE-", qualification, sep = "")]),
'workers now has the qualification', qualification)
# Save csv ----------------------------------------------------------------
write.csv(workerlist, file="Workerlist.csv", na="", row.names=F)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment