在R中按时间序列合并两个向量的数据

时间:2018-08-07 09:45:27

标签: arrays r time-series

我是一名研究助理,并且已经收集了眼动数据,现在我尝试使用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给我结果?

1 个答案:

答案 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隔开。