Я надеюсь, что вы можете мне помочь! Пожалуйста, помогите !!!!
Я нахожусь в SAS, используя PRO C SQL, и у меня есть наборы данных A и B с различными измерениями (касающимися здоровья пациента) следующим образом:
Набор данных A
ID Date measurement_a
1 20JUN2013 52.3
1 12JUL2013 65.6
1 28NOV2014 37.4
1 02DEC2014 61.3
1 22SEP2015 40.5
1 15OCT2015 60.5
2 03JUN2011 46.5
2 19JUL2011 54.1
2 29OCT2012 53.6
...
Набор данных B
ID Date measurement_b
1 21MAR2007 43
1 13JUL2007 45
1 07APR2009 47
1 14MAY2009 46
1 16FEB2012 42
1 27AUG2012 53
1 12DEC2012 58
1 20JUN2013 56
1 10DEC2013 53
1 23MAY2014 49
1 17SEP2014 44
1 23SEP2015 40
2 16DEC2011 58
2 22AUG2012 54
2 20FEB2013 56
2 29MAY2013 53
...
Я ищу, чтобы дата в наборе данных B находилась в течение 6 месяцев с даты в наборе данных a Затем будет добавлена новая переменная под названием «время», скажем 1,2,3, et c. сколько из них когда-либо совпадает с ** only measure_a ** length (другими словами, мне не нужно сохранять значения measure_b, если оно не соответствует дате в наборе данных a. Вот пример того, что я имею в виду:
Желаемый результат / набор данных:
ID Time measurement_a measurement_b
1 1 52.3 56 (Dataset B Date = 20JUN2013 - Matched exactly)
1 2 65.6 53 (Dataset B date = 10DEC2013 - Within six months of 12JUL2013 [Dataset A Date])
1 3 37.4 44 (Dataset B date = 17SEP2014 - Within six months of 28NOV2014 [Dataset A Date])
1 4 61.3 . (because 17SEP2014 [Dataset B] is closest to 28NOV2014 [Dataset A])
1 5 40.5 40 (because 23SEP2015 [Dataset B] is closest to 22SEP2015 [Dataset A])
1 6 60.5 . (No date in Dataset B that is within 6 months of Date in Dataset A [15OCT2015])
2 1 46.5 . (See below)
2 2 54.1 58 (because 03JUL2011 [Dataset B] is closest to 19JUL2011 [Dataset A])
2 3 53.6 54 (Dataset B date = 22AUG2012 - Within 6 months of Dataset A date = 29OCT2012)
...
Я присоединился к ID, но времена оказываются трудными. Я знаю, что это может быть разница в месяцах в выражении "где" в следующем коде:
PROC SQL;
CREATE TABLE join_test as
SELECT * FROM data_a as a
LEFT_JOIN data_b as b
ON a.id = b.id
WHERE days(a.Date - b.Date) <= 180 ;
QUIT;
Но это не сработает.
Может ли какой-нибудь пожалуйста помочь мне?
Я действительно ценю это Заранее спасибо.