【发布时间】:2021-11-07 08:19:26
【问题描述】:
我有一个大数据集:
head(data)
subject stim1 stim2 Chosen outcome
1 1 2 1 2 0
2 1 3 2 2 0
3 1 3 1 1 0
4 1 2 3 3 1
5 1 1 3 1 1
6 1 2 1 1 1
tail(data)
subject stim1 stim2 Chosen outcome
44249 3020 40 42 42 0
44250 3020 40 41 41 1
44251 3020 44 45 45 1
44252 3020 41 43 43 0
44253 3020 42 40 42 0
44254 3020 42 44 44 1
我的目标是(在每个主题内)为每一行检查最近出现相同两个 stim1 和 stim2 的案例,然后添加一列
- 从该行选择的条目 (Previous_Choice)
- 该行的结果变量 (Previous_outcome)
- 之前未在该行中选择的数字是否(即在 Previous_Choice 行中) 随后在导致当前试验的任何行中被选中。例如,如果它的 stim1=1 和 stim2=2 和 Chosen=2,那么我正在查看在此之后的任何试验中是否 Chosen=1(直到我的当前行)(S_choice)(例如,参见第 6 行)李>
棘手的部分是我不关心哪个其中一个数字是stim1,哪个数字是stim2。 For example if my current trial stim1=1 and stim2=2 i want the most recent trial where (stim1=1,stim2=2 OR stim1=2, stim2=1)
期望的结果
subject stim1 stim2 Chosen outcome Previous_Choice Previous_Outcome S_choice
1 1 2 1 2 0 NA NA NA
2 1 3 2 2 0 NA NA NA
3 1 3 1 1 0 NA NA NA
4 1 2 3 3 1 2 0 FALSE
5 1 1 3 1 1 1 0 FALSE
6 1 2 1 1 1 2 0 TRUE
注意 - S_choice 在第六行中为真的原因是因为在试验 1 之后(其中 1 和 2 分别是 stim1 和 stim2),在第 3 行和第 5 行中选择了 1
str(data)
'data.frame': 44254 obs. of 5 variables:
$ subject: num 1 1 1 1 1 1 1 1 1 1 ...
$ stim1 : int 2 3 3 2 1 2 2 3 2 2 ...
$ stim2 : int 1 2 1 3 3 1 3 1 1 1 ...
$ Chosen : int 2 2 1 3 1 1 2 1 2 2 ...
$ outcome: int 0 0 0 1 1 1 1 0 1 0 ...
【问题讨论】:
标签: r database dataframe dplyr