Объединить широкий кадр данных в длинный формат данных - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть многовариантные данные повторных измерений, заданные в длинном формате в R. Переменная времени состоит из базовой линии, после вмешательства и последующего наблюдения. Я хочу вычислить квантили на основе базовых значений, чтобы увидеть, как эти квантили развиваются с течением времени.

Я использую функцию квартиля, которую я нашел в StackOverflow , которая работает хорошо.

getQuantileGroupNum <- function(vec, group_num, decreasing=FALSE) {
  if(decreasing) {
    abs(cut(vec, quantile(vec, probs=seq(0, 1, 1 / group_num), type=8, na.rm=TRUE), labels=FALSE, include.lowest=T) - group_num - 1)
  } else {
    cut(vec, quantile(vec, probs=seq(0, 1, 1 / group_num), type=8, na.rm=TRUE), labels=1:4, include.lowest=T)
  }
}

Я хочу вычислить базовые квантили и включить их в свой длинный формат данных. Следовательно, я фильтрую базовые значения и применяю квартильные функции ко всем переменным, которые заканчиваются на _log.

df_q <- df %>%
  filter(., time=="Baseline") %>%
  dplyr::select(ends_with("_log")) %>%
  cbind(., setNames(lapply(., getQuantileGroupNum, 4),
                   paste0(names(.), "_q")))

df_q теперь является файлом данных с только базовыми значениями и квантилями для нескольких преобразованных в лог переменных.

Вопросы: 1. Как включить переменные базовых квантилей в файл данных длинного формата df? Я мог бы использовать rbind (df_q, df_q, df_q) и cbind, чтобы добавить df_q к df, но есть ли более чистый подход? 2. Сценарий, который я написал, удаляет все переменные, к которым функция не применяется (например, время, идентификатор). Как я могу хранить эти переменные в df_q без вычисления квантилей? Выбор удаляет все переменные, которые не заканчиваются журналом.

Я нашел подобный вопрос в другом месте, но все еще не мог понять его.

Спасибо за помощь.

...