Implementazione JSL per l'eliminazione di colonne con tutti i valori mancanti per la stessa categoriaNel file allegato, il campo "Store" è diviso in due store, A e B. Se tutte le celle dell'intera colonna corrispondenti allo stesso Store presentano valori mancanti, allora bisogna eliminare l'intera colonna, come mostrato nel "Risultato previsto" allegato. Come si può implementare questo utilizzando JSL?
Riesco a contare i valori mancanti in ogni colonna, ma non riesco a trovare un modo per verificare se tutte le celle corrispondenti allo stesso archivio contengono valori mancanti. Avete un metodo valido? Dato che in realtà ci sono molte colonne, decine di migliaia, utilizzare un metodo di calcolo che richiederebbe troppo tempo.
Automazione e scriptingRe: Implementazione JSL per l'eliminazione di colonne con tutti i valori mancanti per la stessa categoriaPerché vengono mantenuti :Banana Price e :Durian Price? Mancano tutte le "A" :Banana Price e tutte le "B" :Durian Price.
Re: Implementazione JSL per l'eliminazione di colonne con tutti i valori mancanti per la stessa categoriaCIAO,
Seguendo alla lettera la tua regola, ho ideato un'opzione senza script. Tuttavia, come ha sottolineato @mmarchandFSLR , il risultato non corrisponderebbe ai tuoi "Risultati" perché Banana e Durian verrebbero esclusi/eliminati.
1) Impila tutte le tue colonne (vedi esempio allegato)
2) Utilizzare la formula:
Col Sum( Is Missing( :Data ), :Store, :Label ) / Col Sum( 1, :Store, :Label )
3) Aggiungere una colonna di controllo principale "RIGHE DA ELIMINARE" con la formula:
Col Max( :MISSING by STORE PCT, :Label )
4) Elimina le righe contrassegnate
5) Dividi la tabella risultante per "Etichetta".
Migliore,
TS
Re: Implementazione JSL per l'eliminazione di colonne con tutti i valori mancanti per la stessa categoriaTi suggerisco di creare una tabella simile a questa.

È quindi possibile leggere la tabella e creare un elenco delle colonne che soddisfano i criteri N vs. N mancanti per ogni archivio che si desidera eliminare.
Ecco uno script di esempio per creare la tabella
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
Potresti usare la piattaforma Tabulate per creare la tabella, ma hai indicato di avere migliaia di colonne. Non credo che Tabulate sarebbe la soluzione in quel caso, tuttavia lo script sopra dovrebbe gestirlo.