Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao a tutti.
1.) Come posso estrarre il mese in parole da un valore di data per un'intera colonna?
Supponiamo che la cella n. 1 contenga la data " 19/03/2009 ". Vorrei che la prossima colonna riportasse il mese: " Marzo ", in questo esempio.
2.) Esiste un modo per modificare l'indicatore predefinito per i valori anomali, ad esempio rendere globalmente gli indicatori anomali un triangolo delineato?
Apprezzo l'aiuto.
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?una versione più sofisticata:
Names Default To Here( 1 );
// make a sample data table
dt = New Table( "Data",
add rows( 10000 ),
New Column( "it", Numeric, Ordinal, Format( "Best", 8 ), Formula( Row() ) ),
New Column( "Batch", Numeric, Ordinal, Format( "Best", 8 ), formula( Random Integer( 110 ) ) ),
New Column( "y1", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Batch / 10, 5 ) ) ),
New Column( "y2", Numeric, Continues, Format( "Best", 8 ), formula( Random Lognormal( :Batch / 10, 5 ) ) ),
New Column( "Out",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outy1",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
New Column( "Outy2",
Numeric,
Ordinal,
Format( "Best", 8 ),
Set Property( "Value Colors", {0 = -13977687, 1 = -4222943} ),
Color Cell by Value,
formula( 0 )
),
);
dt << run formulas;
Column( dt, "it" ) << delete formula;
Column( dt, "Batch" ) << delete formula;
Column( dt, "y1" ) << delete formula;
Column( dt, "y2" ) << delete formula;
Column( dt, "Out" ) << delete formula;
Column( dt, "Outy1" ) << delete formula;
Column( dt, "Outy2" ) << delete formula;
// now we get to work
// make a list of batches
byvarlist = Associative Array( dt:Batch ) << get keys;
// make a list of columns
cols = dt << get column names( Continuous ); //List all Numeric columns
// loop through the batches
For( i = 1, i <= N Items( byvarlist ), i++,
// select each batch
dt << select where( dt:Batch == byvarlist[i] );
// subset each batch
subdt = dt << Subset( Selected Rows( 1 ) );
// clear selection for smoth workflow
dt << clear select;
// finde outliers in each variable within each batch
For( ii = 1, ii <= N Items( cols ), ii++,
out = Eval(
Parse(
"subdt << get rows where(
subdt:" || Char( cols[ii] ) || " > Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.75 ) + 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )) | subdt:" || Char( cols[ii] ) || " <
Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 ) - 1.5 * (Col Quantile( subdt:" || Char( cols[ii] ) || ", 0.75 ) - Col Quantile( subdt:" || Char( cols[ii] ) ||
", 0.25 )));"
)
)`;
Eval( Parse( "column (subdt, \!"Out" || Char( cols[ii] || "\!" )[" || Char( out ) || "] = 1;" ) ) );
// also indicate the global outlier
Column( subdt, "Out" )[out] = 1;
//wait (0.00001);
);
// update original data table with new information for the batch
subdt << delete columns( "Batch" );
subdt << delete columns( cols );
dt << Update( With( subdt ), Match Columns( :it = :it ) );
Close( subdt, No Save );
//Wait( 0.00001 );
);
dt << color by column( :Out );
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?Funziona come una funzione VLookup(false).
Grazie, Ian !
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?Forse non è meglio, ma in alternativa potresti anche usare 'Month()' e definire una proprietà dell'etichetta valore:
Nuova tabella ( "Mese della data" ,
Aggiungi righe ( 1 ) ,
Nuova colonna ( "Data" ,
Numerico ,
"Continuo" ,
Formato ( "m/g/a" , 12 ) ,
Formato di input ( "m/g/a" ) ,
Formula ( Oggi () )
) ,
Nuova colonna ( "Mese" ,
Numerico ,
"Continuo" ,
Formato ( "Migliore" , 12 ) ,
Formula ( Mese ( : Data ) ) ,
Etichette di valore (
{ 1 = "Gennaio" , 2 = "Febbraio" , 3 = "Marzo" , 4 = "Aprile" , 5 = "Maggio" , 6
= "Giugno" , 7 = "Luglio" , 8 = "Agosto" , 9 = "Settembre" , 10 = "Ottobre" , 11
= "Novembre" , 12 = "Dicembre" }
) ,
Utilizza etichette valore ( 1 )
)
)
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?Bella sceneggiatura, Ron !
L'ho provato su Fit Y by X, Distribution & Graph Builder e ha funzionato a meraviglia *
Davvero grato e ammiro la tua esperienza in JMP, Ron e Jim.
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?Molto apprezzato, Jim !
Stavo per arrendermi e accontentarmi di Substring() o Left().
La tua soluzione funziona perfettamente.
- Randy
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?un altro modo non consigliato per fare ciò che desideri è modificare le preferenze per le righe selezionate nei grafici. non consiglio di lavorare con le selezioni poiché alcuni altri comandi utilizzeranno la selezione per impostazione predefinita anziché tutte le righe nella tabella. ma puoi comunque provare questo:
Nomi predefiniti qui ( 1 ) ;
//Attenzione: la modifica di una preferenza verrà
//influenza il comportamento predefinito di JMP.
Preferenze ( Modalità di selezione dei marcatori ( 1 ) ) ; // puoi farlo anche dal menu delle preferenze file>>, devi farlo solo una volta.
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
// ottiene l'elenco delle colonne
col = dt << ottenere i nomi delle colonne ( Continuo ) ; //Elenca tutte le colonne numeriche
Per ( io = 1 , io <= N articoli ( col ) , io ++,
fuori = Val (
Analizzare (
"dt << ottieni righe dove(
dt:" || Car ( col [ io ] ) || " > Col Quantile( dt:" || Car ( col [ io ] ) || ", 0,75 ) + 1,5 * (Col Quantile( dt:" ||
Car ( col [ io ] ) || ", 0,75 ) - Col Quantile( dt:" || Car ( col [ io ] ) || ", 0.25 )) | dt:" || Car ( col [ io ] ) || "<
Col Quantile(dt:"
|| Car ( col [ io ] ) || ", 0,25 ) - 1,5 * (Col Quantile( dt:" || Car ( col [ io ] ) || ", 0,75 ) - Col Quantile( dt:" || Car ( col [ io ] ) ||
", 0,25 )));"
)
) `;
selezionato = dt << seleziona le righe ( fuori ) ;
selezionato << Marcatori ( 17 ) ;
//selezionato << Dimensione del marcatore (5); // nessuna opzione del genere
) ;
// guarda come appare
nuova finestra ( "Produzione" ,
casella di riepilogo h (
Distribuzione (
Distribuzione continua ( Colonna ( : altezza ) , Mostra percentuali ( 1 ) , Personalizza le statistiche riassuntive ( Somma ( 1 ) ) ) ,
Distribuzione continua ( Colonna ( : peso ) , Mostra percentuali ( 1 ) , Personalizza le statistiche riassuntive ( Somma ( 1 ) ) ) ,
Invia a rapporto (
Spedizione ( { "Distribuzioni" , "altezza" } , "Istogramma di distribuzione" , FrameBox , { SpedizioneSeg ( Storia Seg ( 1 ) , Colore dell'istogramma ( 53 ) )} ) ,
Spedizione ( { "Distribuzioni" , "peso" } , "Istogramma di distribuzione" , FrameBox , { SpedizioneSeg ( Storia Seg ( 1 ) , Colore dell'istogramma ( 53 ) )} )
)
) ,
Bivariato ( Y ( : altezza ) , X ( : peso ) )
)
) ;
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?CIAO Rabelardo ,
txnelson ha ragione su entrambi gli argomenti. ma, se desideri impostare il marcatore per valori anomali univariati (stile forza bruta), puoi provare quanto segue.
può essere un vantaggio (o uno svantaggio) che qualsiasi riga che costituisce un valore anomalo in qualsiasi colonna ora abbia il segno speciale. potresti modificarlo per contrassegnare i valori anomali in colonne specifiche mentre procedi con l'analisi.
Buona fortuna!
Ron
Nomi predefiniti qui ( 1 ) ;
dt = Aprire ( "$SAMPLE_DATA/Classe grande.jmp" ) ;
// ottiene l'elenco delle colonne
col = dt << ottenere i nomi delle colonne ( Continuo ) ; //Elenca tutte le colonne numeriche
Per ( io = 1 , io <= N articoli ( col ) , io ++,
fuori = Val (
Analizzare (
"dt << ottieni righe dove(
dt:" || Car ( col [ io ] ) || " > Col Quantile( dt:" || Car ( col [ io ] ) || ", 0,75 ) + 1,5 * (Col Quantile( dt:" ||
Car ( col [ io ] ) || ", 0,75) - Col Quantile( dt:" || Car ( col [ io ] ) || ", 0.25 )) | dt:" || Car ( col [ io ] ) || "<
Col Quantile(dt:"
|| Car ( col [ io ] ) || ", 0,25 ) - 1,5 * (Col Quantile( dt:" || Car ( col [ io ] ) || ", 0,75) - Col Quantile( dt:" || Car ( col [ io ] ) ||
", 0,25 )));"
)
)` ;
selezionato = dt << seleziona le righe ( fuori ) ;
selezionato << Marcatori ( "*" ) ;
selezionato << cancellare selezionare ;
) ;
// guarda come appare
Distribuzione (
Distribuzione continua ( Colonna ( : altezza ) , Mostra percentuali ( 1 ) , Personalizza le statistiche riassuntive ( Somma ( 1 ) ) ) ,
Distribuzione continua ( Colonna ( : peso ) , Mostra percentuali ( 1 ) , Personalizza le statistiche riassuntive ( Somma ( 1 ) ) ) ,
Invia a rapporto (
Spedizione ( { "Distribuzioni" , "altezza" } , "Istogramma di distribuzione" , FrameBox , { SpedizioneSeg ( Storia Seg ( 1 ) , Colore dell'istogramma ( 53 ) )} ) ,
Spedizione ( { "Distribuzioni" , "peso" } , "Istogramma di distribuzione" , FrameBox , { SpedizioneSeg ( Storia Seg ( 1 ) , Colore dell'istogramma ( 53 ) )} )
)
) ;
Ri: Come estrarre il mese in parole da un valore di data e come modificare l'indicatore predefinito per i valori anomali?Sono stati raggiunti i seguenti risultati:

Applicando la seguente formula alla colonna Mese:

Per quanto riguarda la tua seconda domanda sull'assegnazione di marcatori specifici ai valori anomali.Il problema è che i marcatori vengono assegnati come stato di riga alle righe, non alle celle all'interno delle colonne.Pertanto, non è possibile eseguire un'assegnazione globale di indicatori anomali per ciascuna colonna.