Я хотел бы иметь возможность преобразовывать длинный фрейм данных в широкий фрейм данных, используя данные продольного клинического испытания. Ниже приведен пример длинного формата, который я хочу изменить:
structure(list(study = structure(c(2L, 2L, 1L, 1L, 1L), .Label = c("Jones,
1996", "Smith, 1999"), class = "factor"), group_allocation =
structure(c(2L, 1L, 2L, 3L, 1L), .Label = c("control", "intervention_1",
"intervention_2"), class = "factor"), outcome = structure(c(2L, 2L, 1L,
1L, 1L), .Label = c("anxiety", "depression"), class = "factor"), bl_mean =
c(6.5, 4.5, 3.7, 4.2, 5.3), fu_timepoint = c(6L, 6L, 12L, 12L, 12L),
fu_mean = c(5.2, 7.5, 2.5, 2.7, 6.3), mean_diff = c(-2.3, NA, -3.8, -3.6,
NA)), class = "data.frame", row.names = c(NA, -5L))
study group_allocation outcome bl_mean fu_timepoint fu_mean mean_diff
1 Smith, 1999 intervention_1 depression 6.5 6 5.2 -2.3
2 Smith, 1999 control depression 4.5 6 7.5 NA
3 Jones, 1996 intervention_1 anxiety 3.7 12 2.5 -3.8
4 Jones, 1996 intervention_2 anxiety 4.2 12 2.7 -3.6
5 Jones, 1996 control anxiety 5.3 12 6.3 NA
Моя проблема заключается в том, что мне нужно только одно наблюдение / строка для каждой группы вмешательства в столбце group_allocation (помеченные «вмешательство_1» и «вмешательство_2») для каждого исследования, и мне нужны данные контрольной группы (помеченные как «контроль» в столбец group_allocation) для перемещения в отдельные столбцы в тех же строках, что и каждая группа вмешательства, для анализа данных, сравнивая группы вмешательства с группами управления (по всему фрейму данных). Вот что я ищу:
structure(list(study = structure(c(2L, 1L, 1L), .Label = c("Jones, 1996",
"Smith, 1999"), class = "factor"), ig_group_allocation = structure(c(1L,
1L, 2L), .Label = c("intervention_1", "intervention_2"), class =
"factor"), outcome = structure(c(2L, 1L, 1L), .Label = c("anxiety",
"depression"), class = "factor"), ig_bl_mean = c(6.5, 3.7, 4.2),
fu_timepoint = c(6L, 12L, 12L), ig_fu_mean = c(5.2, 2.5, 2.7), mean_diff =
c(-2.3, -3.8, -3.6), cg_group_allocation = structure(c(1L, 1L, 1L), .Label
= "control", class = "factor"), cg_bl_mean = c(4.5, 5.3, 5.3), cg_fu_mean
= c(7.5, 6.3, 6.3)), class = "data.frame", row.names = c(NA, -3L))
study ig_group_allocation outcome ig_bl_mean fu_timepoint ig_fu_meanmean_diff cg_group_allocation cg_bl_mean cg_fu_mean
1 Smith, 1999 intervention_1 depression 6.5 6 5.2 -2.3 control 4.5 7.5
2 Jones, 1996 intervention_1 anxiety 3.7 12 2.5 -3.8 control 5.3 6.3
3 Jones, 1996 intervention_2 anxiety 4.2 12 2.7 -3.6 control 5.3 6.3
Я прочитал множество других вопросов по изменению формы данных о переполнении стека, но пока не нашел решения проблемы, аналогичной моей.
Спасибо!