У меня есть набор данных, в котором у некоторых участников есть несколько строк, и мне нужно агрегировать данные таким образом, чтобы у каждого участника была только одна строка. Набор данных содержит различные типы переменных (например, факторы, дата, возраст и т. Д. c.) Я создал код, который работает и выглядит следующим образом:
example4 <- SMARTdata_50j_diagc_2016 %>%
group_by( Patient_Id ) %>%
summarise( Groep = first( Groep ),
Ziekenhuis_Nr = first( Ziekenhuis_Nr ),
Ziekenhuistype = first( Ziekenhuistype ),
aantalDBC = n(),
aantalVervolg = sum( as.numeric( Zorgtype_Code ) ),
Leeftijd = mean( Lft_patient_openenDBC ),
MRI_nee_ja = max( ifelse( MRI_nee_ja == 0, 0, 1 ) ),
aantalMRI = sum( MRI_Aantal ),
Artroscopie_nee_ja = max( ifelse( Artroscopie_nee_jaz_jam == 0, 0, 1 ) ),
aantalArtroscopie = sum( Artroscopie_aantal ),
overigDBC = mean( Aantal_overigeDBC_bijopenen ),
DBC_open = min( open_DBC ),
DBC_sluiten = max( sluiten_DBC ) ) %>%
as.data.frame()
Этот код дает мне по одной строке для каждого участник. Однако у меня есть еще одна переменная, которую мне нужно включить в новый фрейм данных, но я не знаю, как это сделать. Переменная, которую мне нужно добавить, называется «Diagnose_Code» и представляет собой фактор с двумя уровнями, а именно 0 (обозначает 1801) и 1 (обозначает 1805).
Для участников, имеющих несколько строк (в исходный кадр данных), есть участники, которые имеют как 0, так и 1 для этой переменной. Теперь в моем новом фрейме данных я хочу создать переменную для «Diagnose_Code» с тремя уровнями: 0, если все строки этого участника равны 0, 1, если все строки этого участника равны 1, и 2, если строки этот участник имеет и 0 и 1.
Я не знаю, как сделать эту работу. Я немного боролся с кодом ifelse, но безуспешно. Кто-нибудь знает, как я могу заставить это работать в моем коде? Заранее спасибо!