Выбор поднабора столбцов в фрейме данных на основе двух столбцов из другого фрейма данных - PullRequest
0 голосов
/ 03 марта 2019

У меня большой набор данных о встречах с пациентами (~ 6 миллионов).Каждый пациент может иметь несколько записей каждый год в течение нескольких лет.Я хотел бы иметь возможность распределить пациентов по годам, а затем подсчитать их так, чтобы я мог отфильтровать все, кроме одного года, для каждого пациента, чтобы я мог посмотреть на каждого пациента в течение первого года в конкретном плане здравоохранения.

Я могу ранжировать и отфильтровывать первую запись для каждого пациента, однако я подумал, что мне придется создать новый фрейм df и подмножество исходных данных на основе двух столбцов, сгенерированных в моем новом фрейме данных, с использованием% in%.Вот где у меня проблемы.

Несмотря на то, что я часто использую переполнение стека для поиска решений своих вопросов, я обычно не пишу, поэтому терпите меня, если я делаю это неправильно.

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!

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

Можно также использовать slice:

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

0 голосов
/ 03 марта 2019

Вы можете просто сделать все это за один шаг с оператором фильтра (убедитесь, что year - числовая переменная, чтобы это работало).

df1 %>%
 group_by(enrolid) %>%
 filter(year == min(year))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...