שלום לכולם,
לעיתים אנו נדרשים לוודא כי טבלה מסוימת אינה מכילה כפילויות.
הדרך האידאלית לוודא זאת היא ע"י שימוש באופציית nodupkeys של פרוצדורת המיון ובדיקת הלוג.
אולם.. מה אם לצערנו כן נתגלו כפילויות?
כיצד הכי נוח יהיה לאתר אותן?
לשם כך יהיה שימושי המאקרו הבא..
הפלט מכיל 4 קבצים:
1. הקובץ המקורי כאשר הוא ממוין.
2. תוצאה ממוינת ללא חזרות.
3. תוצאה של הרשומות המהוות חזרה כפולה.
4. השימושי ביותר > מיזוג של הרשומות הכפולות חזרה אל תוך הקובץ המקורי כך שהתוצאה מהווה פלט מלא של הרשומות בהם יש חזרה.
%macro _sort4dups(source_lib=, source_tbl=, by_vars=);
proc sort data= &source_lib..&source_tbl
out= &source_tbl._A_sorted
;
by &by_vars;
run;
proc sort data= &source_tbl._A_sorted
out= &source_tbl._B_nodups
dupout= &source_tbl._C_dups1
nodupkeys
;
by &by_vars;
run;
data &source_tbl._C_dups2;
merge &source_tbl._C_dups1 (in=a keep=&by_vars) &source_tbl._A_sorted (in=b);
by &by_vars;
if a;
run;
%mend;
%_sort4dups(source_lib=sashelp, source_tbl=class, by_vars= Age);