R 计算眼睛的反应潜伏期

R 计算眼睛的反应潜伏期,r,response-time,R,Response Time,我想计算眼睛的反应潜伏期。我想通过测量目标在屏幕上的出现和快速眼球运动开始之间的时间差来实现这一点 下面是单个试验示例的图片。紫色线是目标出现在屏幕上的时间段。顶行显示眼睛Y坐标的位置数据,底行显示速度。 正如你在这里看到的,快速向下的眼球运动,以很高的速度,是一种扫视 为了让您了解我的数据的外观,我制作了一个虚拟data.frame。该块表示您也可以在图中看到的块。暂时忽略trial.block。扫视是一列,告诉您数据是S(扫视)还是F(注视) 你知道如何计算每次试验中Iview在目标开始时与

我想计算眼睛的反应潜伏期。我想通过测量目标在屏幕上的出现和快速眼球运动开始之间的时间差来实现这一点

下面是单个试验示例的图片。紫色线是目标出现在屏幕上的时间段。顶行显示眼睛Y坐标的位置数据,底行显示速度。 正如你在这里看到的,快速向下的眼球运动,以很高的速度,是一种扫视

为了让您了解我的数据的外观,我制作了一个虚拟data.frame。该块表示您也可以在图中看到的块。暂时忽略trial.block。扫视是一列,告诉您数据是S(扫视)还是F(注视)

你知道如何计算每次试验中Iview在目标开始时与第一次扫视开始之间的时间吗

非常感谢

library(dplyr)
N = 500

G.df <- data.frame(Iview = seq(N*2),
               cue.condition = rep(c("spatial", "non-spatial"), each = N),
               block = rep(c("fixation.1", "fixation.2", "target.1", "target.2"), each = N/2),
               trial.block = rep(1:4, each = N/2),
               trial.number = rep(1:50, each = 10),
               saccade = sample(c("S","F"), size = 100, replace = T))
库(dplyr)
N=500

我不确定我是否正确理解了你的要求。每次试验第一次出现
block=='target.1'
和第一次出现
block=='target.1'&scacade=='S'
之间的时间可以如下计算:

G.df %>%
  group_by(trial.number) %>%
  summarise(time_between = Iview[block == "target.1" & saccade == "S"][1] - Iview[block == "target.1"][1])

# A tibble: 50 x 2
   trial.number time_between
          <int>        <int>
 1            1            2
 2            2            1
 3            3            0
 4            4            0
 5            5            1
 6            6            1
 7            7            1
 8            8            1
 9            9            0
10           10            0
# ... with 40 more rows
G.df%>%
分组依据(试验编号)%>%
总结(时间间隔=Iview[block==“target.1”&扫视==“S”][1]-Iview[block==“target.1”][1])
#一个tibble:50x2
试用编号时间
1            1            2
2            2            1
3            3            0
4            4            0
5            5            1
6            6            1
7            7            1
8            8            1
9            9            0
10           10            0
# ... 还有40行

该死,我知道有比我更简单的方法。。我还不知道Iview[block==“target.1”&扫视==s[1]是可能的。你和dplyr都很聪明。@LAP再次感谢你,伙计!只是一个快速的问题@LAP。只有在trial.number相同的情况下,提取2个data.frames的值最简单的方法是什么?我有一个df的反应时间长度为144,另一个为111,我只想提取普通的trial.number值。如果(按钮\u rt$trial.number%在%eye\u rt$trial\u number==T{calculate=按钮\u rt$reaction.time-eye\u rt$reaction time}但是如果
对向量不起作用,它会给我带来一些问题。
如果
和逻辑,你不需要指定
==T
。在%y中的
x%的结果已经返回了
。在这两个数据帧中,与公共试验数的重叠是否大小完全相同?试验.两个df中的数字完全相同。但是,button\u rt和eye\u rt的nrow不相同,这意味着两个data.frames(
subset(button\u rt,button\u rt$trial.number%in%eye\u rt$trial\u number)
的子集中都不存在一些trial.number,反之亦然),然后按trial.number对两个data.frames进行排序(
button\rt[顺序(button\u rt$trial.number),]
,与
eye\u rt
)相同,只需使用
button\u rt$reaction.time-eye\u rt$reaction.time减去向量即可。