In realtà sono entrato nella community per vedere se c'era già qualcosa di nuovo in questo, ancora non sono sicuro se mi manca qualcosa ora integrato ...
Voglio, usando JSL, sostituire determinati valori (come -999 o> 998) con mancanti in molte colonne (possibilmente tutte colonne numeriche). Non è difficile scriverlo. bell'esempio di cosa intendo e cosa sto facendo attualmente qui:
https://community.jmp.com/t5/Discussions/Deleting-cell-values/td-p/46957
Ma (1) questo sembra qualcosa che potrebbe essere abbastanza comune, quindi forse vale la pena la sua funzione integrata (o la capacità di scrivere l'abilità di ricodifica) e (2) non è velocissimo su dati di grandi dimensioni, quindi se è possibile forse una risorsa in più un metodo sottostante efficiente potrebbe far parte di tale soluzione. (?)
Nel caso sia più veloce, anche l'abbonamento alla tabella dati è un'opzione:
dt = open("$SAMPLE_DATA/Big Class.jmp");
r = loc(dt[0, 4]==61)
dt[r, 4] = .;Un elemento della lista dei desideri richiesto qualche tempo fa era di consentire l'assegnazione delle proprietà della colonna a una colonna del gruppo di tabelle definita (un elenco di colonne).
Un'alternativa abbastanza semplice è selezionare le colonne che necessitano di "pulizia". Copia negli appunti una proprietà codice valore mancante, quindi invia il messaggio JSL Incolla le proprietà di più colonne alla tabella dei dati. Lo script allegato mostra un metodo a matrice per sostituire i valori senza un ciclo for, tuttavia, trovo più utile il codice dei valori mancanti: i valori dei dati (originali) del database non vengono modificati, è possibile impostare più di un valore e i valori originali possono essere recuperato.
Names Default to Here(1);
//create example table
dt = New Table( "example",
Add Rows( 3 ),
New Column( "A",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "B",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "C",
Character,
"Nominal",
Set Values( {"", "", ""} )
),
New Column( "x_1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 2, 8] )
),
New Column( "x_2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [8, 8, 8] )
),
New Column( "x_3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 2] )
),
New Column( "x_4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [7, 8, 5] )
),
New Column( "x_5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 3] )
),
New Column( "x_6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [2, 8, 8] )
),
New Column( "E",
Character,
"Nominal",
Set Values( {"", "", ""} )
)
);
// this replaces values
<STRONG>cnme = dt << get column names(numeric);
dt << select Columns(cnme);</STRONG>
mat = dt << get as matrix;
mat[loc(mat==8)]=empty();
dt[1::nrow(dt),cnme]=mat;
//Close dt and rerun the code to create dt
<STRONG>set clipboard("{Add Column Properties(Set Property(\!"Missing Value Codes\!", {8}))}");
dt << Paste Multi Columns Properties;</STRONG>
//The value of 8 appears, but is treated as missing.
//There is a request that column property settings can be assigned to a column group