Это может быть очень сложно, и я подозреваю, что это требует передовых знаний. У меня есть два разных типа данных. Я должен комбинировать:
Данные:
Dataframe A:
перечислены все даты переливания по идентификатору пациента. Каждое переливание представлено отдельной строкой, пациенты могут иметь множественные переливания. В тот же день у разных пациентов могут быть переливания.
Patient ID Transfusion.Date
1          01/01/2000
1          01/30/2000
2          04/01/2003
3          04/01/2003
Кадры данных типа B содержат результаты тестов в другие даты, а также идентификатор пациента:
Patient ID  Test.Date   Test.Value
1           11/30/1999   negative
1           01/15/2000   700 copies/uL
1           01/27/2000   900 copies/uL
2           03/30/2003   negative
Я хотел бы иметь Dataframe A с таким же количеством строк (1 для каждой переливания) и с самым последним Test.Value в качестве отдельного столбца. Каждая дата трансфузии должна иметь результат теста теста, проведенного наиболее близко (ранее) до переливания.
желаемый результат:
- >
Patient ID Transfusion.Date Pre.Transfusion.Test
1          01/01/2000       negative
1          01/30/2000       900 copies/ul
2          04/01/2003       negative
3          04/01/2003       NA
Я думаю, что общая стратегия заключалась бы в подмножестве data.frames по идентификаторам пациентов. Затем возьмите все даты переливания для пациента 1, проверьте, какой результат ближе всего к всем доступным значениям test_dates для каждого элемента, а затем верните ближайшее значение.
Как я могу объяснить R для этого?
Изменить 1. Здесь приведен код R для этих примеров.
df_A <- data.frame(MRN = c(1,1,2,3), 
                   Transfusion.Date = as.Date(c('01/01/2000', '01/30/2000', 
                   '04/01/2003','04/01/2003'),'%m/%d/%Y')) 
df_B <- data.frame(MRN = c(1,1,1,2), 
                   Test.Date = as.Date(c('11/30/1999', '01/15/2000', '01/27/2000', 
                   '03/30/2003'),'%m/%d/%Y'), Test.Result = c('negative', 
                   '700 copies/ul','900 copies/ul','negative'))
Изменить 2:
Чтобы уточнить, результирующие данные должны быть: пациент А получил переливание в день X и день Y. (для df_A). До переливания в день X его последний результат теста был Х (ближайшая дата теста для первого переливания в df_B). До переливания в день Y его последний результат теста был Y (до второго переливания, также в df_B. Df_B также содержит кучу других дат тестирования, которые не нужны для конечного результата.
