Вчера я задал вопрос здесь о том, как объединить несколько строк в фактор с тремя уровнями. Это исправлено! Тем не менее, мой руководитель также хочет создать второй фрейм данных. Я объясню свой фрейм данных:
Мои данные содержат участников, которые имеют несколько строк. Существуют разные типы переменных (например, возраст, дата, факторные переменные и т. Д. 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( ifelse( Zorgtype_Code == 0, 0, 1 ) ) ),
Diagnose_code = case_when(
all( Diagnose_Code == 1 ) ~ 1,
all( Diagnose_Code == 0 ) ~ 0,
TRUE ~ 2 ),
Leeftijd = mean( Lft_patient_openenDBC ),
Geslacht = first( Geslacht ),
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» есть три значения (см. здесь ). Участник, который имеет значение 2 в этом новом кадре данных, в действительности имеет значение 0 и 1 в исходном кадре данных. Мой руководитель хочет создать второй фрейм данных, где вместо тех участников, которые получают значение 2, они получают значение, связанное с последней датой open_DB C. Переменная open_DB C является типом yearmon.
Я думал о том, чтобы воспользоваться советом, который я получил вчера, и работать с case_when, что-то вроде
Diagnose_code = case_when(
all( Diagnose_Code == 1 ) ~ 1,
all( Diagnose_Code == 0 ) ~ 0,
TRUE ~ Diagnose_Code[, max( open_DBC )] )
, но это не правильно. Я не уверен, как мне выбрать значение Diagnose_Code, которое относится к максимальной дате open_DB C. Кто-нибудь знает, как решить эту проблему? Заранее спасибо!