【发布时间】:2020-03-29 12:26:20
【问题描述】:
我有一个数据集,其中一些参与者有多行,我需要以每个参与者只有一行的方式聚合数据。数据集包含不同的变量类型(例如,因素、日期、年龄等)。我编写了一个有效的代码,如下所示:
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,则为 2该参与者同时具有 0 和 1。
我不知道如何使这项工作。我在 ifelse 代码上有点挣扎,但没有成功。有谁知道我如何在我的代码中完成这项工作?先感谢您!
【问题讨论】: