【发布时间】:2021-11-09 18:35:28
【问题描述】:
提前道歉,这个问题很大 - 我正在尝试包含尽可能多的细节。下面的示例表是行为任务的输出。在 448 次试验中,每一次试验的开始和结束都有视觉掩码、一个视觉素数(六个可能的素数,用代码 1:6 表示)和一个做出响应的目标(六个可能,表示通过代码 7:12)。对目标的准确度用 1(正确)或 0(错误)表示。
我现在需要向响应行添加新代码。这些新闻代码必须是代表目标类型和准确性的每种组合的新数字。例如,如果有一个正方形目标(代码 12),并且参与者是正确的(准确度 = 1),则新代码将为 25;如果有一个方形目标 (12) 并且它们不正确 (Accuracy=0),则新代码将为 26,以此类推,目标 (7:12) 和准确度 (0:1) 的每个组合(总共 12 个组合)。
| Trial | Label | Code | Accuracy |
|---|---|---|---|
| 1 | Pre-Mask | 13 | 1 |
| 1 | BluePrime | 6 | 1 |
| 1 | SqureTarget | 12 | 1 |
| 1 | Post-Mask | 14 | 1 |
| 1 | Response | NA | 1 |
| 2 | Pre-Mask | 13 | 0 |
| 2 | RedPrime | 4 | 0 |
| 2 | CircleTarget | 9 | 0 |
| 2 | Post-Mask | 14 | 0 |
| 2 | Response | NA | 0 |
基本上,我需要一个条件语句,根据缺失值之前两行中两个不同列的信息替换 NA。输出应如下所示:
| Trial | Label | Code | Accuracy |
|---|---|---|---|
| 1 | Pre-Mask | 13 | 1 |
| 1 | BluePrime | 6 | 1 |
| 1 | SqureTarget | 12 | 1 |
| 1 | Post-Mask | 14 | 1 |
| 1 | Response | 25 | 1 |
| 2 | Pre-Mask | 13 | 0 |
| 2 | RedPrime | 4 | 0 |
| 2 | CircleTarget | 9 | 0 |
| 2 | Post-Mask | 14 | 0 |
| 2 | Response | 20 | 0 |
这是包含所有新可能组合的表格:
| When target is.. | And Accuracy is... | New Code # |
|---|---|---|
| 7 | 1 | 15 |
| 7 | 0 | 16 |
| 8 | 1 | 17 |
| 8 | 0 | 18 |
| 9 | 1 | 19 |
| 9 | 0 | 20 |
| 10 | 1 | 21 |
| 10 | 0 | 22 |
| 11 | 1 | 23 |
| 11 | 0 | 24 |
| 12 | 1 | 25 |
| 12 | 0 | 26 |
我尝试了 lag() 和 case_when() 的不同组合,但是当我开始输入时,我意识到我真的不知道如何构造参数(我对 R 和编程还是很陌生) .我知道我可以在 Excel 中手动输入数字,但我希望在 R 中在某种程度上实现自动化。我意识到这些信息也可以很容易地放入新行中,但是为了下一个程序,我是用于理解代码值,它们都需要按照它们实时出现的顺序在同一列中(响应输入将始终遵循后视觉掩码,代码 14)。
如果需要任何澄清,请告诉我。任何帮助表示赞赏!
【问题讨论】:
标签: r dplyr conditional-statements data-manipulation