【问题标题】:How to Remove Patients with Less Than 2 Visits of Data [duplicate]如何删除数据访问次数少于 2 次的患者 [重复]
【发布时间】:2015-03-24 10:24:33
【问题描述】:

我有一个纵向数据集,每次访问结构为 1 行。
数字患者 ID 号表示唯一的患者。

如何从我的数据集中删除所有观察次数少于 2 的患者?

所以对于这个例子,我想删除病人 105110 的行。

例子

Patient ID   Disease Score
101             5
101             2
101             2
105             1
110             5
115             1
115             1

【问题讨论】:

    标签: r subset panel-data


    【解决方案1】:
    dat <- read.table(text="Patient ID,Disease Score
    101,5
    101,2
    101,2
    105,1
    110,5
    115,1
    115,1", stringsAs=FALSE, header=TRUE, sep=",")
    
    # one way in base
    dat[dat$Patient.ID %in% names(which(table(dat$Patient.ID)>2)),]
    
    # one way in dplyr
    library(dplyr)
    
    dat %>% 
      group_by(Patient.ID) %>%
      mutate(n=n()) %>%
      ungroup() %>%
      filter(n>=2) %>%
      select(Patient.ID, Disease.Score)
    

    【讨论】:

    • 我正要建议:dat %&gt;% group_by(Patient.ID) %&gt;% summarise(Disease.Score = sum(Disease.Score)) %&gt;% filter(Disease.Score &gt;= 2)
    • 谢谢 hrbrmstr,基本方式的示例运行良好。
    • @StevenBeaupré 我不知道@Mark 是否需要实际的个人记录(并且错误地认为他需要它们)。完全同意 summarise 仅用于识别 >=2 条记录会更理想。
    猜你喜欢
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    相关资源
    最近更新 更多