问题描述
我正在尝试以试验的第一个值是否等于 1 为条件更改连续数字。例如,在下面的 fixation_to_target
列中,有与参与者是否正在看目标相对应的值在给定的样本中,从 time=100
开始。
我需要执行以下操作:
- 检查参与者是否正在看
time=100
处的目标 - 如果是,则将该值和任何不等于 1 的连续值变为 0。
- 如果不是,请保留数据。
- 将所有这些新信息放入一个新的列中以供进一步分析,这样他们在试验开始时就已经在注视目标的情况不再存在。
以下是当前数据的示例:
trial time fixation_to_target
1 100 1
1 200 1
1 300 1
1 400 1
2 100 1
2 200 1
2 300 0
2 400 0
3 100 1
3 200 1
3 300 1
3 400 0
4 100 0
4 200 0
4 300 1
4 400 1
请注意,除 4 之外的所有试验都以对目标的注视开始。
这是所需的输出:
trial time fixation_to_target new_fixation_to_target
1 100 1 0
1 200 1 0
1 300 1 0
1 400 1 0
2 100 1 0
2 200 1 0
2 300 0 0
2 400 0 0
3 100 1 0
3 200 1 0
3 300 1 0
3 400 0 0
4 100 0 0
4 200 0 0
4 300 1 0
4 400 1 1
到目前为止,我已经尝试过这样的事情,但我没有得到我需要的东西:
df = df %>%
mutate(placeholder_target = if_else(time==100 & fixation_to_target==1,1,0))
df = df %>%
mutate(target = if_else(placeholder_target==1,rle(fixation_to_target),fixation_to_target))
第二个命令不起作用,因为我很确定我的 rle
语句有问题;我想说的是,如果 placeholder_target
列等于 1(即,如果试验以对目标的注视开始),则更改该值以及原始 {{1} 中所有连续的 1 值}} 列在新的 fixation_to_target
列中设置为 0,否则保留 target
列中的原始值。我将从新的 fixation_to_target
列进行分析。
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)