Как определить временную точку и усреднить данные по нескольким предметам? - PullRequest
0 голосов
/ 12 сентября 2018

Вот мой файл:

blood pressure data every second

time3 составляет от -3600 до + 400-600 мс. Мне нужно скопировать это time3 в 20-секундное окно с моментом времени 0, равным 0 и не находящимся в середине окна. Затем мне нужно сделать среднее значение reSYS для каждых 20 секунд окна. Мне нужно сделать это для каждого Subject ("DL001" до "DL028") и каждого condition ("Light" или "control").

Я пробовал несколько вариантов, более близкий этот:

data3 <- data2 %>% 
  group_by(time3 = cut(time3, breaks=205, include.lowest = TRUE)) %>%
  summarize(RR_int.mean = mean(RR_int))

Но 20-секундное окно начинается с первой временной точки, которая появляется -3599.312 и идет полностью вверх, так что точка времени 0 находится в окне между -9 и +11. Он усредняет все значения по всем предметам вместе, вместо того, чтобы делать это для каждого предмета в отдельности.

Может кто-нибудь мне помочь?

1 Ответ

0 голосов
/ 12 сентября 2018

Трудно сказать без примера набора данных, но попробуйте следующее.

Определите вектор разрыва, который включает в себя ноль и идет вверх или вниз оттуда.

brk_time3 <- with(data2, unique(c(rev(seq(0, min(time3), by = -20)), seq(0, max(time3), by = 20))))

Теперь этопростой group_by/summarize.

data3 <- data2 %>%
    group_by(time3 = cut(time3, breaks = brk_time3, include.lowest = TRUE), Subject, condition) %>%
    summarize(mean.reSYS = mean(reSYS))
...