У меня есть набор данных, содержащий непрерывные данные об эмоциональных реакциях субъектов на различные раздражители. Вы можете скачать пример файла данных здесь: https://www.dropbox.com/s/gvn27b6can2ka8s/example%20data.txt?dl=0.
Переменная стимула имеет 3 различных значения (NBL, EGR, KGR). Мне нужно разделить некоторые из этих значений (EGR и KGR) на три части, основываясь на информации о времени, стимуле и предмете. В итоге я хочу получить новую переменную стимула со значениями NBL, EGR_1, EGR_2, EGR3, KGR_1, KGR_2, KGR_3.
KGR_1
Начало: Первая строка, содержащая KGR для каждого значения «субъекта»
Концы: 304 секунды после первой строки KGR
KGR_2
Начало: Первая строка после последняя строка KGR_1
Концы: 90 секунд после первой строки KGR_2
KGR_3
Начало: Первая строка после последней строки KGR_2
Концы: Последняя строка, содержащая KGR для каждого значения «subject "
EGR_1
Начинается: первая строка, содержащая EGR для каждого значения" субъекта "
Концы: 304 секунды после первого ряда EGR
EGR_2
Начинается: Первая строка после последней строки EGR_1
Концы: 91 секунда после первой строки EGR_2
EGR_3
Начало: Первая строка после последней строки EGR_2
Концы: последняя строка, содержащая EGR для каждого значения « subject "
Я подошел к проблеме с этим кодом:
exampledata <- exampledata %>%
mutate(time = as.POSIXct(strptime(substr(time, 1, 8), "%H:%M:%S"))) %>%
group_by(subject) %>%
mutate(dt_secs = as.numeric(difftime(time, lag(time), units = 'secs'))) %>%
tidyr::replace_na(list(dt_secs = 0)) %>%
group_by(subject, stimulus) %>%
mutate(cum_time = cumsum(dt_secs),
is_first_for_event = cum_time == min(cum_time),
is_last_for_event = cum_time == max(cum_time),
KGR_1_end = (stimulus == "KGR") & (cum_time == 304),
KGR_2_start = (stimulus == "KGR") & (cum_time == 305),
KGR_2_end = (stimulus == "KGR") & (cum_time == 394),
KGR_3_start = (stimulus == "KGR") & (cum_time == 395),
EGR_1_end = (stimulus == "EGR") & (cum_time == 304),
EGR_2_start = (stimulus == "EGR") & (cum_time == 305),
EGR_2_end = (stimulus == "EGR") & (cum_time == 395),
EGR_3_start = (stimulus == "EGR") & (cum_time == 396))
Проблема в том, что, поскольку у меня есть 7-8 кадров в секунду анализа, набор данных имеет несколько строк данных в секунду , так что это не совсем работает. Я пытался приспособить это, используя миллисекунды как единицы вместо секунд, но безуспешно. Возможно, этот подход очень хорош, в этом случае я не знаю, как продолжить то, что я получаю (множественные значения TRUE), пытаясь вычислить эту новую переменную.
R и кодирование вообще для меня действительно ново.