Ciao a tutti,
Sto lavorando con un set di dati excel in cui più file (batch) vengono uniti per una singola work unit e una singola resa. Una volta in JMP, le celle di fusione si dividono e ogni riga, tranne la colonna di rendimento e di scarto, viene popolata con i valori corretti per ciascun ordine di lavoro.
Devo popolare i valori mancanti con il valore di rendimento per quell'ordine di lavoro. Ho allegato una tabella di dati di esempio.
Posso farlo creando una nuova colonna e usando un'istruzione condizionale con lag, ma mi piacerebbe farlo senza una nuova colonna.
// example of populating missing values with new column
dt << new column("test", numeric, continuous, set each value(if( :WorkOrder == lag(:WorkOrder,1)& is missing(:yield),:yield= lag(:yield,1),:yield)));Il mio primo pensiero è stato quello di usare un ciclo for, ma ho dei problemi. Lo script sottostante viene eseguito ma non inserisce alcun dato al posto dei valori mancanti. Qualcuno potrebbe suggerire un modo migliore per farlo?
dt = current data table();
n=nrows(dt);
for(i=0,i<=n, i++,
if( :workorder == lag(:workorder,1)& is missing(:yield),:yield= lag(:yield,1),:yield)
);
Grazie mille, funziona perfettamente.
In uno script, utilizzando un ciclo For (), è necessario specificare la riga utilizzando un pedice. Vedi sotto
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 2, i <= N Rows( dt ), i++,
If( :workorder[i] == :workorder[i - 1] & Is Missing( :yield[i] ),
:yield[i] = :yield[i - 1]
)
);