Давайте попробуем воссоздать ситуацию, которую вы описываете.
Вот кадр данных, где 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))
Если ни один предмет не имеет полного набора, вам придется разработать какое-то соединение между обработанными и исходными данными.