我是一名研究助理,并且已经收集了眼动数据,现在我尝试使用R进行分析。
在我使用的眼动仪中,每个样本都被标记为是否属于一个扫视(这意味着眼睛移动了),是否属于眨眼。当某人开始眨眼时,眼动仪首先识别出扫视,随后识别出眨眼。为了能够替换属于眨眼的所有眼动样本(数据文件中的线),我需要创建一个变量来标记包含眨眼的所有扫视。一个简单的例子如下:
我有数据:
Data <- data.frame(Blink=c(0,0,0,1,1,0,0,0,1,1,0,0,0,0,0), Saccade=c(0,1,1,1,1,1,0,1,1,1,1,0,1,1,0))
我想要一个这样的变量:
Data$Saccade_containing_blink <- c(0,1,1,1,1,1,0,1,1,1,1,0,0,0,0)
哪个功能可以使用R给我结果?
答案 0 :(得分:0)
X1_is_HIGH X2_is_FAIL X3_is_GOOD
True True True
True False True
False True False
此方法的原理是能够对# example data
Data <- data.frame(Blink=c(0,0,0,1,1,0,0,0,1,1,0,0,0,0,0),
Saccade=c(0,1,1,1,1,1,0,1,1,1,1,0,1,1,0))
library(dplyr)
Data %>%
group_by(group = cumsum(Saccade==0)) %>% # group your Saccades
mutate(Saccade_containing_blink = max(Blink), # if there's a Blink update all rows within that Saccade
Saccade_containing_blink = ifelse(Saccade == 0, 0, Saccade_containing_blink)) %>% # update Saccade to exclude the 0s (0s separate Saccades)
ungroup() %>% # ungroup data
select(-group) # remove grouping column
# # A tibble: 15 x 3
# Blink Saccade Saccade_containing_blink
# <dbl> <dbl> <dbl>
# 1 0 0 0
# 2 0 1 1
# 3 0 1 1
# 4 1 1 1
# 5 1 1 1
# 6 0 1 1
# 7 0 0 0
# 8 0 1 1
# 9 1 1 1
# 10 1 1 1
# 11 0 1 1
# 12 0 0 0
# 13 0 1 0
# 14 0 1 0
# 15 0 0 0
列进行分组,并检查每个Saccade
中至少一行中是否有Blink
。我假设扫视在列Saccade
中用0
隔开。