我有一个纵向数据集,每次访问结构为 1 行。
数字患者 ID 号表示唯一的患者。
如何从我的数据集中删除少于 2 次观察的所有患者?
所以对于这个例子,我想删除病人105和110的行。
例子
Patient ID Disease Score
101 5
101 2
101 2
105 1
110 5
115 1
115 1
我有一个纵向数据集,每次访问结构为 1 行。
数字患者 ID 号表示唯一的患者。
如何从我的数据集中删除少于 2 次观察的所有患者?
所以对于这个例子,我想删除病人105和110的行。
例子
Patient ID Disease Score
101 5
101 2
101 2
105 1
110 5
115 1
115 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)