Имам набор от данни от този вид, този набор от данни съдържа някои липсващи стойности (представям ги с X).
ID VA VB ... Vn | ID VA VB ... Vn |
1 a1 b1 ... n1 | 1 a1 X ... n1 |
2 a2 b2 ... n2 |=== 2 X b2 ... X |
3 a3 b3 ... n3 |=== 3 a3 b3 ... n3 |
.................. | .................. |
N aN bN ... nN | N X bN ... nN |
Искам да добавя наблюдения по ID, като използвам само една променлива колона, ще нарека тази променлива VAR: нещо като формат на обърната процедура по ID; var VAR;.
ID VAR
1 a1
..
1 n1
2 b2
..
3 a3
3 b3
..
3 n3
..
N bN
..
N nN
така че се опитах да разделя OLDdataset на различни набори от данни (NEWa NEWb ...NEWn), където във всеки набор от данни имаме всички наблюдения, които не липсват, съхранени в колона, наречена VAR. След това ще обединя NEWa NEWb ... NEWn в NEWdataset и ще приложа процедура за сортиране за възстановяване на реда по ID.
Проблемът възникна, когато разбрах, че "n" не е известно преди анализа, защото искам да настроя обобщен код, който няма да работи само за един набор от данни, а VA VB VN са резултат от стъпка на формат на proc.
Ако n знае, бих използвал нещо подобно:
data NEWa NEWb NEWc;
set OLDdataset;
array try[3] VA VB VC ;
if try[1] ne '.' then output NEWa;
if try[1] ne '.' then output NEWb;
if try[1] ne '.' then output NEWc;
run;
Но сега имам нужда от някаква итеративна система за именуване, която може би може да звучи като:
data NEW_i; <-------- "i" must be assigned
set OLDdataset;
array try[*] V: ;
do i=1 dim(try);
if try[i] ne '.' then output NEW_i; <---- "i" must be assigned
run;
Надяваме се, че това звучи ясно. Някакви съвети? Благодаря.