У меня есть набор данных, в котором у меня есть разные имена в одном столбце, имена могут быть дублированы. Моя задача состоит в том, чтобы сравнить каждое имя с остальными именами в столбце. Например, если я беру имя 1 «Vishal», мне нужно сравнить его со всеми именами от 2 до 13. Если есть совпадение имя из строки 2-13 будет отличаться от столбца «флаг» со значением Y, если существует дубликат, если нет дубликата, тогда значение NI должно выполнить эту операцию со всеми именами в группеЗацикливание в соответствии с дубликатами в SAS
У меня есть написал код, который выглядит следующим образом:
data Name;
input counter name $50.;
cards;
1 vishal
2 swati
3 sahil
4 suman
5 bindu
6 bindu
7 vishal
8 tushar
9 sahil
10 swati
11 gudia
12 priyansh
13 priyansh
;
proc sql;
select count(name) into: n from swati;
quit;
proc sql;
select name into: name1 -:name13 from swati;
quit;
options mlogic mprint symbolgen;
%macro swati;
data name1;
set swati;
%do i = 1 %to 1;
%do j= %eval(&i.+1) %to &n.;
if &&name&i. =&&name&j. then flag="N";
else flag="Y";
%end;
%end;
run;
%mend;
%swati;
код дает мне юдоль N для всех имен, даже если есть соответствие имени, также делает другую переменную с используя все имена переменных. *
Требуемый выход показан ниже
Название флага
Вишал N
Свази N
SAHIL N
Suman Y
бинду N
бинду Y
vishal Y
tushar Y
sahil Y
Свати Y
gudia Y
priyansh N
priyansh YПоэтому в основном мы начали находить Вишал (первое имя) от 2 до 13 лет и посмотреть, если есть дубликат, если есть флаг N т.е. есть дубликат. Давайте посмотрим имя «Суман», которое является четвертым именем в списке, и мы начинаем искать его соответствие от 5 до 13. Поскольку для этого нет дубликата, мы отметили его как «Y».
Мы должны сделать это с помощью DO LOOP
Разве вы не просто спрашиваете, является ли NAME одинаковым значением для каждой записи? – Tom
Предложите, чтобы вы отображали желаемые выходные данные при обработке показанных 13 записей. – Quentin
Ты слишком много работаешь. Посмотрите сортировку proc и дубликаты. Или BY обрабатывается в SAS. – Reeza