Как посчитать возникновение перестановок в наборе данных в R? - PullRequest
0 голосов
/ 06 апреля 2019

У меня есть вопрос о том, как подсчитать возникновение указанных перестановок в наборе данных в R.

В настоящее время я работаю над наборами данных непрерывного мониторинга глюкозы.Вкратце, каждый набор данных имеет от 1500 до 2000 наблюдений (каждое наблюдение представляет собой величину глюкозы в плазме, измеряемую каждые 5 минут в течение 6 дней).

Мне нужно подсчитать число значений глюкозы ниже 3,9, возникающих в течение 15 минут или более и менее 120 минут подряд (> 3 наблюдения и <24 наблюдения для значений <3,9 подряд) по числовому значениюмасштаб.</p>

Я создал новую переменную с коэффициентом 1 или 0, для которой значение глюкозы в плазме ниже 3,9 или нет.

Затем я хотел бы подсчитать число случаев перестановок> три1 в ряд и <двадцать четыре 1 в ряд.</p>

Есть ли в R функция для этого или какой самый простой подход?

1 Ответ

0 голосов
/ 06 апреля 2019

Я не уверен, правильно ли я понял вашу структуру данных, но, возможно, следующий код все еще может помочь

Я предполагаю структуру данных, которая включает Измерение, идентификатор человека и идентификатор измерения.

library(dplyr)
# create dumy-data
set.seed(123)
data_test = data.frame(measure = rnorm(100, 3.5,2), person_id = rep(1:10, each = 10), measure_id = rep(1:10, 10))

data_test$below_criterion = 0 # indicator for measures below crit-value
data_test$below_criterion[which(data_test$measure < 3.9)] = 1 # indicator for measures below crit-value

# indicator, that shows if the current measurement is the first one below crit_val in a possible series
# shift columns, to compare current value with previous one
data_test = data_test %>% group_by(person_id) %>% mutate(prev_below_crit = c(below_criterion[1], below_criterion[1:(n()-1)]))
data_test$start_of_run = 0 # create the indicator variable
data_test$start_of_run[which(data_test$below_criterion == 1 & data_test$prev_below_crit == 0)] = 1 # if current value is below crit and previous value is above, this is the start of a series
data_test = data_test %>% group_by(person_id) %>% mutate(grouper = cumsum(start_of_run)) # helper-variable to group all the possible series within a person

data_test = data_test %>% select(measure, person_id, measure_id, below_criterion, grouper) # get rid of the previous created helper-variables

data_results = data_test %>% group_by(person_id, grouper) %>% summarise(count_below_crit = sum(below_criterion)) # count the length of each series by summing up all below_crit indicators within a person and series

data_results = data_results %>% group_by(person_id) %>% filter(count_below_crit >= 3 & count_below_crit <=24) %>% summarise(n()) # count all series within a desired length for each person
data_results

data.frame(data_test)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...