【发布时间】:2013-03-27 15:23:57
【问题描述】:
可能是一个非常简单的问题,但我很难在 r 中解决这个问题。 我有一个包含四个变量的数据集:ID(用于识别参与者)、类型(这次为 1 值)、决策(A 或 B)和反馈(0 或 1)。两个参与者的数据集如下所示:
ID Type Decision Feedback
1 1 A 0
1 1 A 0
1 1 B 1
1 1 B 1
1 1 B 0
2 1 A 0
2 1 A 1
2 1 A 1
2 1 A 0
2 1 B 1
etc...
我想根据之前的反馈计算决策过程中的更改次数。换句话说,如果参与者选择 A 并收到负面反馈,她/他会再次选择 A(Stay)还是 B(Shift)。因此,对于一位参与者,我的代码如下:
Stay=0
Shift=0
for(i in 2:length(mydf$Type)){
if(mydf$Decision[i] == "A" && mydf$Feedback[i-1]==1 && mydf$Decision [i-1] == "A" ){
Stay= Stay+1
}
else if(mydf$Decision [i] == "B" && mydf$Feedback[i-1]==1 && mydf$Decision [i-1] == "B" ){
Stay= Stay+1
}
else if(mydf$ Decision [i] == "A" && mydf$Feedback[i-1]==1 && mydf$Decision [i-1] == "B" ){
Shift= Shift+1
}
else if(mydf$Decision [i] == "B" && mydf$Feedback[i-1]==1 && mydf$Decision [i-1] == "A" ){
Shift= Shift+1
}
}
但是,我的数据框包含 20 个参与者,我不知道如何扩展我的代码以获取每个参与者的停留和轮班次数(即,最后得到类似的结果):
#ID Stay Shift
#1 10 10
#2 16 4
#etc...
非常感谢您提前提供的帮助。
【问题讨论】:
-
您能否发布
dput(head(mydf, 50))的结果,这将创建数据框前 50 行的可重现版本并使其更容易回答? -
反馈如何影响他们留在 A 还是 B?
-
对于您展示的示例,对于
ID=1,您能解释一下stay和shift是什么吗? -
Stay 和 Shift 是值。如果参与者选择 A,他/她会收到 pos 或 neg 反馈。根据反馈,他/她可以决定再次选择 A(这是停留)或选择其他选项(这将是一个转变)。我想统计实验期间的停留和轮班次数。
-
所以在ID=1的情况下,有5次试验,第二次是停留,因为参与者最初选择A后选择了A,但第三次决定是转变,因为他/她选择了B。接下来的两个决定也是停留。