У меня есть следующая таблица данных:
CASEID VISIT AVWEIGHT med.corrected DLYDOSE DLYFREQ
1: 1004 10 55.5 LISINOPRIL 20.00 2
2: 1004 20 53.9 LISINOPRIL 10.00 1
3: 1004 30 60.4 LISINOPRIL 10.00 1
4: 1004 40 61.3 LISINOPRIL 10.00 1
5: 1044 10 24.7 LISINOPRIL 2.50 1
6: 1044 20 28.1 LISINOPRIL 2.50 1
7: 1072 10 17.3 AMLODIPINE 2.50 1
8: 1072 20 18.3 CANDESARTAN 2.00 1
9: 1072 20 18.3 AMLODIPINE 1.25 1
10: 1072 30 20.9 CANDESARTAN 4.00 1
11: 1072 30 20.9 AMLODIPINE 2.50 1
12: 1072 40 NA CANDESARTAN 4.00 1
13: 1072 40 NA AMLODIPINE 2.50 1
14: 1072 60 29.6 CANDESARTAN 4.00 1
15: 1072 60 29.6 AMLODIPINE 2.50 1
16: 1072 70 34.1 CANDESARTAN 4.00 1
17: 1072 70 34.1 AMLODIPINE 2.50 1
18: 1072 80 42.0 LISINOPRIL 2.50 1
19: 1072 80 42.0 AMLODIPINE 2.50 1
20: 1072 90 49.8 AMLODIPINE 2.50 1
21: 1078 10 68.1 LISINOPRIL 20.00 1
22: 1092 10 108.4 LISINOPRIL 40.00 1
23: 1092 20 120.5 LISINOPRIL 40.00 1
24: 1092 30 131.5 LISINOPRIL 40.00 1
25: 1092 40 123.1 LISINOPRIL 40.00 1
26: 1096 10 129.3 AMLODIPINE 15.00 1
27: 1100 10 56.3 LISINOPRIL 10.00 1
28: 1100 20 72.8 LISINOPRIL 10.00 1
29: 1132 10 52.2 LISINOPRIL 5.00 1
30: 1132 20 52.3 LISINOPRIL 5.00 1
Обратите внимание, что для некоторых комбинаций CASEID / VISIT / AVWEIGHT существует несколько разных лекарств (med.corrected), и у каждого есть свои соответствующие DLYDOSE и DLYFREQ (см., Например, строки 8 и 9). Я знаю, что во всех данных есть около 800 уникальных CASEID и около 20 различных лекарственных препаратов, представляющих интерес.
Я хотел бы изменить это в таблицу данных с заголовками, похожими на приведенные ниже. Ключ в том, что каждая строка должна представлять все лекарства и информацию о дозировке для данного CASEID при данном ВИЗИТЕ:
CASEID VISIT AVWEIGHT med.corrected_1 med.corrected_2 med.corrected_3 ... med.corrected_20
Значения DLYDOSE для каждого лекарства должны быть в столбцах от med.corrected_1 до med.corrected_20.
Это может быть очевидным, но большинство пациентов будут иметь NA для большинства лекарств в столбцах выше, так как они, вероятно, будут принимать только 1 или 2 лекарства. Тем не менее, для моего анализа, я хотел бы организовать это, как указано выше.
Я относительно новичок в R, но ознакомился с несколькими учебниками и вопросами, которые, я думаю, наиболее близки к моей проблеме, перечислены здесь:
Использование расплава / отливки с переменными неравной длины в R
Я пытался использовать «литье и плавить», но безуспешно.
dt.m1 = melt (dt, id = c ("CASEID", "VISIT", "AVWEIGHT"))
затем...
dt.c1 = dcast (dt.m1, CASEID + ВИЗИТ ~ переменная, value.var = "значение")
и несколько вариантов этих функций, но ни одна из них не приблизилась к созданию дополнительных столбцов и организации данных по мере необходимости.
Буду признателен за любую помощь.