Чтобы объяснить мою проблему, я использую этот пример набора данных:
SampleID Date Project Problem
03D00173 03-Dec-2010 1,00
03D00173 03-Dec-2010 1,00
03D00173 28-Sep-2009 YNTRAD
03D00173 28-Sep-2009 YNTRAD
Теперь проблема в том, что мне нужно заменить текст "YNTRAD" на "YNTRAD_PILOT", но только для случаев с датой =28 сентября 2009 г.
Этот пример является частью гораздо более крупной базы данных, в которой гораздо больше дел имеют Project = YNTRAD и Data = 28 сентября 2009 г., поэтому я не могу просто сначала выбрать все дела с28 сентября 2009 г., затем проверьте, в каком из этих случаев есть Project = YNTRAD, и затем замените.Вместо этого мне нужно сделать следующее:
- Посмотрите на каждый случай, у которого в проблеме есть 1,00 (это проблемные случаи)
- Затем найдите SampleID, соответствующий этомуsample
- Затем найдите все другие случаи с тем же SampleID, НО WITH Date = 28-Sep-2009 (это необходимо, поскольку только эти образцы являются частью пилотного исследования), а затем замените YNTRAD в Project на YNTRAD_PILOT.
Я много читал о:
LOOP - ДЕЛАТЬ ПОВТОР - ДЕЛАТЬ ЕСЛИ
, но я не знаю, как использовать их для решения этой проблемы.
Сначала я попытался создать список, содержащий только идентификаторы образцов, которые в конечном итоге необходимо изменить (опять же, это часть гораздо большей базы данных).
STRING SampleID2 (A20).
IF (Problem=1) SampleID2=SampleID.
EXECUTE.
AGGREGATE
/OUTFILE=*
/BREAK=SampleID2
/n_SampleID2=N.
Это дает набор данных только сSampleID, для которых необходимо внести изменения.Однако я не знаю, как считывать этот набор данных в каждом конкретном случае и искать каждый SampleID в общем файле со всей датой, а затем изменять только те случаи, когда Date = 28-Sep-2009.