У меня большой фрейм данных (15000 наблюдений 800 переменных). Наблюдения относятся к пациентам в 2 разных временных точках (то есть 15000 человек = 10000 пациентов при базовом посещении + 5000 из первых 10000 человек, которые вернулись для последующего посещения). Пациенты имеют переменную PatientID (PtID: фактор с 10000 уровнями) и переменную посещения (Визит: фактор с 2 уровнями: 1 для исходного уровня, 2 для последующего наблюдения).
Пример данных
PtID Visit Age_Visit Brain_colour BP .................
40 1 60 NA 130
40 2 62 blue 120
70 1 50 green 145
101 1 67 red 67
263 1 78 red 178
263 2 80 green 90
143 1 15 blue 123
219 1 69 red 110
219 2 70 green NA
Я хотел бы изменить формат фрейма данных, чтобы каждый пациент представлял собой одно наблюдение с 800 базовыми переменными, повторяемыми в качестве другой переменной наблюдения (переход от 15000 наблюдений к 800 переменным до 10000 наблюдений (только для базовых пациентов). ) из 1600 переменных). 5000 пациентов без наблюдения будут иметь значения NA для всех переменных наблюдения.
Я нашел приведенный ниже код из другого вопроса, НО с таким количеством переменных, которые мне нужно изменить, я не могу перечислить их все.
d <- setDT(x)[, list(WorryHighBGNow = paste(WorryHighBGNow,
collapse = ', ')),by = c('PtID')]
Кроме того, я хотел бы создать новые переменные последующих действий. Как я могу легко изменить мои данные выше на данные ниже для такого большого кадра данных?
PtID Age_Visit1 Age_Visit2 Brain_colour1 Brain_colour2 BP1 BP2 .................
40 60 62 NA blue 120 145
70 50 NA green NA 145 NA
101 67 NA red NA 67 NA
263 78 80 red green 178 90
...................