У меня есть данные пупиллометрии для 24 участников, у каждого из которых есть тысячи строк измерений размера зрачка (как я назвал PupilAvg
). Столбец времени называется TrialTimestamp
и измеряется в мс. У меня также есть столбцы trial.number
и trial.type
. Заголовок моего фрейма данных (mydata1
) можно увидеть ниже.
RecordingName trial.number trial.type TrialTimestamp PupilAvg
1 Mix_20_S04 1 same 0 3.910
2 Mix_20_S04 1 same 17 3.815
3 Mix_20_S04 1 same 133 3.545
4 Mix_20_S04 1 same 150 3.460
5 Mix_20_S04 1 same 167 3.410
6 Mix_20_S04 1 same 183 3.345
Мой вопрос: как я могу получить средний базовый уровень для каждого испытания на участника, где базовый уровень равен среднему размеру зрачка между 5400 мс и 5500 мс? Я хотел бы иметь возможность вычесть эти базовые измерения из измерений зрачка в моем окне анализа (чтобы скорректировать их с учетом индивидуальных различий).
Я придумал код, чтобы сделать это для одного испытания (испытание 3) для одного участника (04).
S04data<-filter(mydata1, RecordingName == "Mix_20_S04")
S04data1<-filter(S04data, trial.number == "3")
baselineS04 <- with(S04data1, mean(PupilAvg[TrialTimestamp >= 5400 & TrialTimestamp <= 5500]))
Это возвращает значение 3,1225. Таким образом, базовое значение для участника 4, испытание 3 составляет 3,1225.
Я был бы очень признателен, если бы кто-нибудь помог мне написать код, чтобы получить базовые показатели для каждого участника в каждом испытании (без необходимости писать свой индивидуальный код для каждого участника для каждого испытания !!).