可能是一个非常简单的问题,但我很难在 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...
非常感谢您提前提供的帮助。