sto usando un set di dati, che è qualcosa di simile:Riempire i valori del bianco di una variabile con il valore precedente non vuota SAS 9.3
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| sexe | men | 10 |
| | female | 20 |
| age | 0-20 | 5 |
| | 20-40 | 5 |
| | 40-60 | 10 |
| | >60 | 10 |
+----------+--------+-------+
E vorrei soddisfare le celle "in bianco" con il precedente cella non vuota per ottenere qualcosa come questo.
Ho provato varie possibilità nel passaggio DATA principalmente con la funzione LAG(). L'idea era di leggere la riga precedente quando la cella era vuota e riempirla con quella.
DATA test;
SET test;
IF variable = . THEN DO;
variable = LAG1(variable);
END;
RUN;
E ho ottenuto
+----------+--------+-------+
| Variable | Level | Value |
+----------+--------+-------+
| | men | 10 |
| sexe | female | 20 |
| | 0-20 | 5 |
| age | 20-40 | 5 |
| | 40-60 | 10 |
| | >60 | 10 |
+----------+--------+-------+
Il problema era la buona stringa non è sempre e solo una riga in alto. Ma non capisco perché SAS abbia lasciato in bianco la prima e la linea 3d. Non ha dovuto modificare questa riga perché ho detto "If variable =.". So come farlo in Python o in R con un po 'di ciclo, ma non ho trovato una buona soluzione in SAS.
Ho provato a inserire la stringa all'interno di una variabile con "CALL SYMPUT" e anche con "RETAIN" ma non ha funzionato.
Ci deve essere un modo semplice ed elegante per farlo. Qualche idea?
Domanda utile. Molte grazie. – stan