У меня есть набор данных такого типа, этот набор данных содержит некоторые пропущенные значения (я представляю их с помощью 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 |
Я хочу добавить наблюдения по идентификатору, используя только один столбец переменной, я назову эту переменную VAR: что-то вроде инвертированного формата процедуры по идентификатору; вар ВАР;.
ID VAR
1 a1
..
1 n1
2 b2
..
3 a3
3 b3
..
3 n3
..
N bN
..
N nN
поэтому я попытался разделить СТАРЫЙ набор данных на разные наборы данных (NEWa NEWb ...NEWn), где в каждом наборе данных у нас есть все неотсутствующие наблюдения, хранящиеся в столбце с именем VAR. Потом солью NEWa NEWb...NEВn в NEWdataset и применю proc sort для восстановления порядка по 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;
Надеюсь, это звучит ясно. Любые подсказки? Спасибо.