Чтобы дать некоторый контекст, у меня есть блок данных с отслеживанием информации из психологического эксперимента, и я хочу подсчитать переключение между двумя интересующими областями (AOI) для каждого участника.
Вот упрощенная схема данных проблемы (мы предполагаем, что AOI2 == !AOI1
, поэтому она нам не нужна):
library(tidyverse)
df <- tibble(Participant = rep(1:7, times = 1, each = 10),
Time = rep(1:10, 7),
AOI1 = rbinom(70, 1, .5))
Я хочу посчитать, сколько раз значение AOI1
изменяется в течение времени для каждого участника. Я мог бы сделать это, используя for
петли, как показано ниже, но мне было интересно, есть ли более простой и более R способ сделать это?
df.switches <- tibble(Participant = 1:7,
Switches = NA)
for(p in 1:7){
s <- 0
for(i in 2:10){
if(subset(df, Participant == p & Time == i, select = AOI1) !=
subset(df, Participant == p & Time == i-1, select = AOI1)){
s <- s + 1
}
}
df.switches <- df.switches %>%
mutate(Switches = ifelse(Participant == p, s, Switches))
}