[英]Combining data of two vectors in a time series in R
我是一名研究助理,已經收集了眼動數據,現在嘗試使用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給我該結果?
# 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
列進行分組,並檢查每個Saccade
中的至少一行是否存在Blink
。 我假設Saccade
在Saccade
列中用0
分隔。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.