簡體   English   中英

根據另一個數據框中的兩列選擇數據框中的列子集

[英]Selecting subset of columns in a data frame based on two columns from another data frame

我有一個大型的數據集患者遭遇(約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

Thnaks!

您可以使用filter語句一步一步完成所有操作(確保year是一個數字變量,此功能才能起作用)。

df1 %>%
 group_by(enrolid) %>%
 filter(year == min(year))

也可以使用slice

df1 %>% group_by(enrolid) %>% slice(which.min(year))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM