У меня большой набор данных, который содержит данные о пациентах. У некоторых пациентов есть несколько рядов, и я хочу объединить эти ряды, чтобы у каждого пациента был один ряд.
У меня около 20 разных переменных. Некоторые переменные должны оставаться неизменными при объединении строк (например, пациент с 4 строками, входящий в группу 1, должен по-прежнему находиться в группе 1 при объединении строк), но у меня также есть переменные, которые должны удовлетворять определенному условию ( например, если пациент перенес операцию в одном (или нескольких) рядах, он должен стать «да». Если нет, он должен стать «нет»).
Я пытался найти ответ, но я в замешательстве. Я пытался использовать plyr, но кажется, что использовать эту функцию не рекомендуется, так как она работает медленно с очень большими наборами данных. Я нашел некоторую информацию о dplyr, но я не понимаю, как мне это использовать.
Так, например, у меня есть следующий набор данных (мои извинения за то, как я это представляю, я новичок в Stackoverflow)
**Patient_Id** /**Group** /**Age** /**Gender** /**surgery y/n** /**no of surgeries**
1 - 1 - 63 - F - no - 0
1 - 1 - 63 - F - no - 0
1 - 1 - 64 - F - yes - 1
2 - 0 - 60 - M - yes - 2
3 - 1 - 65 - M - no - 0
4 - 0 - 60 - F - no - 0
4 - 0 - 61 - F - yes - 1
4 - 0 - 62 - F - yes - 1
И я хочу создать такой фрейм данных
**Patient_Id** /**Group** /**Age** /**Gender** /**surgery y/n** /**no of surgeries**
1 - 1 - 63,33 - F - yes - 1
2 - 0 - 60 - M - yes - 2
3 - 1 - 65 - M - no - 0
4 - 0 - 61 - F - yes - 2
Кто-нибудь знает, какую функцию лучше всего использовать? Или как начать? Заранее спасибо!
Данные в формате dput
.
df1 <-
structure(list(Patient_Id = c(1, 1, 1, 2, 3, 4, 4, 4),
Group = c(1, 1, 1, 0, 1, 0, 0, 0), Age = c(63, 63, 64,
60, 65, 60, 61, 62), Gender = c("F", "F", "F", "M",
"M", "F", "F", "F"), `surgery y/n` = c("no", "no", "yes",
"yes", "no", "no", "yes", "yes"), `no of surgeries` = c(0L,
0L, 1L, 2L, 0L, 0L, 1L, 1L)), row.names = c(NA, -8L),
class = "data.frame")
df2 <-
structure(list(Patient_Id = c(1, 2, 3, 4),
Group = c(1, 0, 1, 0), Age = c("63,33",
"60", "65", "61"), Gender = c("F", "M",
"M", "F"), `surgery y/n` = c("yes", "yes",
"no", "yes"), `no of surgeries` = c(1, 2,
0, 2)), row.names = c(NA, -4L),
class = "data.frame")
Структура моего кадра данных выглядит следующим образом:
str (SMARTdata_50j_diagc_2016) 'data. кадр: 458794 об. из 20 переменных:
$ Groep: Коэффициент w / 2 уровня "0", "1": 2 2 2 2 2 1 2 2 2 2 ...
$ Ziekenhuis_Nr: Коэффициент w / 13 уровней "1", "10", "11", ..: 2 8 4 11 3 7 10 9 13 6 ...
$ Ziekenhuistype: коэффициент с 3 уровнями "0", " 1 "," 2 ": 2 2 2 2 1 1 2 1 2 3 ...
$ Patient_Id: номер 85550 101414 239946 291650 140558 ...
$ DBC_Id: номер 181394 230887 448945 524873 251352 ...
$ Diagnose_Code: коэффициент с 5 уровнями "0", "1", "2", "3", ..: 1 1 1 1 1 1 1 1 1 1. ..
$ Zorgtype_Code: коэффициент с 2 уровнями "0", "1": 2 2 2 1 2 2 2 1 1 2 ...
$ Lft_patient_openenDB C: num 50 80 66 60 67 64 54 71 70 76 ...
$ Geslacht: Коэффициент с 2 уровнями "0", "1": 1 1 2 2 2 1 1 1 2 1 ...
$ MRI_nee_ja: Коэффициент с 2 уровнями "0", "1": 1 1 1 2 1 1 1 1 1 1 ...
$ MRI_Aantal: num 0 0 0 1 0 0 0 0 0 0 ...
$ Artroscopie_nee_jaz_jam: Коэффициент с 3 уровнями "0", "1", "2": 1 1 1 3 1 1 1 1 1 ...
$ Artroscopie_aan таль: число 0 0 0 1 0 0 0 0 0 0 ...
$ Jaar_openen_DB C: число 2016 2017 2018 2017 2017 ...
$ Mnd_openen_DB C: число 12 5 6 2 5 8 10 11 1 1 ...
$ Jaar_sluiten_DB C: номер 2017 2017 2018 2017 2017 ...
$ Mnd_sluiten_DB C: номер 4 9 10 4 9 12 2 3 4 5 ...
$ Aantal_overigeDBC_bijopenen: num 1 1 2 1 0 0 1 0 0 0 ...
$ open_DB C: 'yearmon' num De c 2016 май 2017 июнь 2018 фев 2017 ...
$ sluiten_DB C: 'yearmon' num апр. 2017 сент. 2017 окт. 2018 апр. 2017 ... ... 1063 *