【发布时间】:2020-07-11 18:09:52
【问题描述】:
昨天我问了一个问题 here 关于如何将多行聚合成一个具有三个级别的因子。这是固定的!但是,我的主管也想制作第二个数据框。我将解释我的数据框:
我的数据包含具有多行的参与者。有不同的变量类型(例如,年龄、日期、因素变量等)。我已经汇总了数据,以便每个参与者都有一行包含以下代码
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”,存在三个值(参见here)。在这个新数据帧中具有值 2 的参与者实际上在原始数据帧中具有 0 和 1 的值。我的主管想要制作第二个数据框,而不是那些参与者获得值 2,而是获得与 open_DBC 的最新日期相关联的值。变量 open_DBC 是“yearmon”类型。
我一直在考虑使用我昨天得到的建议并使用 case_when,比如
Diagnose_code = case_when(
all( Diagnose_Code == 1 ) ~ 1,
all( Diagnose_Code == 0 ) ~ 0,
TRUE ~ Diagnose_Code[, max( open_DBC )] )
但这是不正确的。我不确定应该如何选择属于 open_DBC 最大日期的 Diagnose_Code 值。有谁知道如何解决这个问题?先感谢您!
【问题讨论】: