Как сделать фрейм данных с одинаковым количеством строк для каждого участника - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть фрейм данных с 80 субъектами, каждый из которых должен иметь 50 наблюдений.Однако из-за некоторых критериев исключения, применявшихся ранее при обработке данных, теперь НЕ каждый субъект имеет 50 наблюдений.Но чтобы применить некоторую последующую процедуру анализа данных, мне нужно, чтобы фрейм данных был 80 * 50. Итак, мне нужно добавить эти недостающие строки обратно и присвоить им значения 0. Интересно, как мне этого добиться.

Я использую упрощенную ситуацию, чтобы проиллюстрировать это.Предположим, что фрейм данных имеет три столбца: Subj, TimeBin и Value.Предположим, есть 3 Subjs: S001, S002, S003;и есть 6 таймбинов: T0, T1, T2, T3, T4, T5.Теперь у S001 и S002 есть все необходимые наблюдения, но у S003 отсутствуют наблюдения в T2 и T5.Как мне составить эти два пропущенных ряда?

Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Давайте попробуем воссоздать ситуацию, которую вы описываете.

Вот кадр данных, где Value для (S003, T2) и (S003, T5) равно NA:

library(dplyr)
library(tidyr)

set.seed(1001) 
df1 <- data.frame(Subj = rep(c("S001", "S002", "S003"), each = 6),
                  TimeBin = rep(c("T0", "T1", "T2", "T3", "T4", "T5"), 3),
                  Value = c(sample(1:50, 18, replace = TRUE))) %>% 
       mutate(Value = ifelse(Subj == "S003" & grepl("T[2|5]", TimeBin), NA, Value))

«некоторые критерии исключения, применявшиеся ранее при обработке данных» - вы не указываете, что это такое, но давайте просто опустим строки со значениями NA:

df1 <- na.omit(df1)

tidyr::complete() может обработать это при условии, что по крайней меренекоторые предметы имеют полный набор строк:

df1 %>% 
  complete(Subj, nesting(TimeBin), fill = list(Value = 0))

Если ни один предмет не имеет полного набора, вам придется разработать какое-то соединение между обработанными и исходными данными.

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