У меня есть два набора данных.У каждого есть информация для здоровья каждого предмета.Другой имеет информацию до и после даты МРТ.Я пытаюсь извлечь информацию о состоянии здоровья на основе этих дат до / после.
Набор данных до / после МРТ:
ID prescan PreDate Postscan PostDate
5006 1 5/10/2018 1 6/14/2018
5007 1 5/15/2018 1 6/13/2018
5009 1 5/9/2018 1 6/11/2018
5011 1 5/31/2018 1 7/2/2018
5013 1 5/30/2018 1 7/5/2018
Образец данных сна:
SubID SleepDate Day of Week RHR HRV Recovery
5007 5/12/2018 'Saturday ' 63 95 65
5007 5/13/2018 'Sunday ' 66 72 52
5010 5/7/2018 'Monday ' 74 40 48
5010 5/8/2018 'Tuesday ' 68 67 59
5010 5/9/2018 'Wednesday' 75 74 82
5010 5/10/2018 'Thursday ' 71 80 89
5010 5/11/2018 'Friday ' 71 91 95
5010 5/12/2018 'Saturday ' 68 66 58
5008 5/7/2018 'Monday ' 60 132 85
5008 5/8/2018 'Tuesday ' 60 123 90
5008 5/9/2018 'Wednesday' 66 105 68
5009 5/7/2018 'Monday ' 47 148 90
5009 5/8/2018 'Tuesday ' 45 169 87
5009 5/9/2018 'Wednesday' 46 176 75
5009 5/10/2018 'Thursday ' 50 138 54
5009 5/11/2018 'Friday ' 46 132 42
5009 5/12/2018 'Saturday ' 47 158 60
5009 5/13/2018 'Sunday ' 47 141 54
5006 5/7/2018 'Monday ' 56 92 65
То, что я пробовал (и варианты этого)
SleepData %>%
subset(SubID == 5006) %>%
filter(SleepDate %in% MRI_date$PreDate)
Выше часто возвращаются все данные 5006 ID
SleepData %>%
subset(SubID == 5006) %>%
subset(SleepDate == MRI_date$PreDate)
, которые возвращают:
longer object length is not a multiple of shorter object lengthLength of logical index must be 1 or 31, not 44Error in (function (..., row.names = NULL, check.rows = FALSE, check.names = TRUE, :
arguments imply differing number of rows: 0, 1
что япытаюсь извлечь
Исходя из этого, например:
If ID == 5009 & (Date == 5/9/2018 & 6/11/2018)
Я хотел бы получить данные сна соответственно:
SubID SleepDate Day of Week RHR HRV Recovery
5009 5/9/2018 'Wednesday' 46 176 75
5009 6/11/2018 'Wednesday' 76 196 95
[Я составил 6/ 11/2018 для справки]