【发布时间】:2019-03-03 06:17:42
【问题描述】:
我有一个庞大的患者遭遇数据集(约 600 万)。每位患者在多年内每年可能有多个条目。我希望能够根据年份安排患者,然后对他们进行编号,以便我可以过滤除每位患者之外的所有患者,以便我可以查看每位患者在特定健康计划中第一年的情况。
我能够对每个患者的第一个条目进行排名和过滤,但是我认为我必须使用 %in% 根据在新数据框中生成的两列创建一个新的 df 和子集原始数据框。这是我遇到麻烦的地方。
虽然我经常使用堆栈溢出来寻找问题的解决方案,但我通常不会发帖,所以如果我做得不好,请多多包涵。
enrolid<- c(223801,223801, 223801, 223801, 223801, 223803, 223803, 223804)
year<- c(2008, 2008, 2009, 2010, 2011, 2008, 2011, 2008)
service<- c( "CT", "Colonoscopy", "labs", "office_visit", "med", "office_vist", "hospitalization", "CT")
#But for 6 million enounters. I want to me extract the enrolid and first #year for each individual in my data set.
df1<-data.frame(enrolid, year, service)
df2<- df1 %>%
group_by(enrolid) %>%
filter(rank(year, ties.method="first")==1) %>%
mutate(enrollment_year_num = 1) %>%
select(enrolid, year)`
df1 %>%
filter_all(any_vars(. %in% df2)) #tried with df2$enrolid & df2year
谢谢!
【问题讨论】: