目录
问卷制作
问卷发布
数据下载
数据处理
问卷制作据说MTurk自带的问卷不是很好用,所以我们选择在Qualtrics制作问卷。
新建project创建新问卷:
左侧有很多格式与功能,不一一赘述了,例如常用的Matrix table:
设置为必答题:
最重要的一步!设置survey code!
在Qualtrics做问卷获得一个code,工人把code填回MTurk才能将二者关联起来,证明自己填写了问卷 // 实践中发现有工人填错了code,但是通过其他信息的对比也能核实其身份,虽然很麻烦,但善(怕)良(事)的我还是支付了工资。
选择左侧的survey flow,再点击下面绿色的Add a New Element Here
选择Embedded Data
命名为Random ID
设置值
设置随机数,例如在10000到99999的整数,Insert
鼠标放在Move上,把它拖拽到survey flow的顶部并保存,survey code就设置好了
最后我们需要再操作一番在问卷的尾部显示这个survey code
先添加一个text question,修改一下文本
Here is your ID: Copy this value to paste into Mturk. When you have copied this ID, please click the next button to submit.选择Piped Text - Embedded Data Field - Random ID - Insert
问卷就会变成这样,每次都会出现随机的survey code
问卷发布首先需要在Qualtrics发布问卷,然后将问卷链接粘贴到MTurk
这里应该有MTurk操作步骤,但是因为账号问题暂时上不去了,下次一定..
数据下载
Qualtrics:
选择 Export & Import 下载csv格式的数据
MTurk:
选择 Download csv 下载数据
数据处理
由于Qualtrics包含问卷作答结果,Mturk包含问卷approved或reject的状态,二者共同拥有的信息是Random ID,即上文所设置的survey code,这是连接两个表的关键标识。
方法一:excel的vlookup函数
若想根据学号把上面的两个表合并,选中第一个表的绿框位置的单元格,点击fx选择vlookup函数。
第一个参数,你想搜什么,比如A2的值
第二个参数,你想从哪里搜索第一个参数,从某区域。建议在数据源区域中按F4添加绝对引用,具体原因参照 vlookup 2张表 显示na_vlookup返回#N/A的四种解决办法_weixin_39833469的博客-CSDN博客
第三个参数,你想在当前单元格里展示什么,比如2代表数据表选中区域(上一步)的第二列
最后一个参数,最简单易懂,图里有说明,一般设置为FALSE即可
下拉复制公式,可以得到所有人成绩。#N/A表示没有搜索到。
但是!注意这个大坑——
如果交换第二个表的列顺序,我们需要检索的学号不在第一列,就会出现下图这种奇怪的#N/A
不太清楚这个函数具体机制,所以!强烈安利使用python!
方法二:python的pandas
import pandas as pd# 导入mturk下载的csv文件,只保留survey code和status两列data_mturk = pd.read_csv('/Users/ici/Desktop/low_m.csv')data_mturk = data_mturk.loc[:,['Answer.surveycode','AssignmentStatus']]# 导入qualtrics下载的csv文件,因为前几行包括了问卷问题等信息,所以进行一下切片处理data_qualtrics = pd.read_csv('/Users/ici/Desktop/low_q.csv')data_qualtrics = data_qualtrics.loc[2:]# 将mturk的Answer.surveycode和qualtrics的Random ID转换成相同的数据类型data_qualtrics['Random ID'] = data_qualtrics['Random ID'].astype(int)data_mturk['Answer.surveycode'] = data_mturk['Answer.surveycode'].astype(int)# 合并combine_file = pd.merge(data_qualtrics, data_mturk, left_on='Random ID', right_on='Answer.surveycode')# 仅保留状态为Approved的数据combine_file = combine_file.loc[combine_file['AssignmentStatus'] == 'Approved']# 生成并导出新csv文件combine_file.to_csv('/Users/ici/Desktop/new.csv')舒服了,下次只需要修改代码的文件路径就能轻松合并两个csv文件了~~~