根据特定时间点的特定值更改列中的连续值

问题描述

我正在尝试以试验的第一个值是否等于 1 为条件更改连续数字。例如,在下面的 fixation_to_target 列中,有与参与者是否正在看目标相对应的值在给定的样本中,从 time=100 开始。

我需要执行以下操作:

  1. 检查参与者是否正在看time=100处的目标
  2. 如果是,则将该值和任何不等于 1 的连续值变为 0。
  3. 如果不是,请保留数据。
  4. 将所有这些新信息放入一个新的列中以供进一步分析,这样他们在试验开始时就已经在注视目标的情况不再存在。

以下是当前数据的示例:

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 (将#修改为@)