Problema nello script JMP per loopCiao, ho due domande:
Ques1 -
Ho un semplice dato (allegato) e uno script che funziona bene, ma fintanto che voglio convertirlo in un ciclo for. Non ottenendo la cosa giusta.
OBIETTIVO - Voglio il valore di resistenza del 10% superiore per ogni corrente. I miei dati non sono simmetrici, significa che il numero di punti dati per ogni corrente è diverso.
Negli stessi dati ci sono solo 7 valori correnti e nei dati reali, può richiedere centinaia di valori.
Approccio: sto generando una tabella quantile e quindi confrontando il mio valore di resistenza in base al valore quantile del 90% e aggiungendo una colonna extra "Top10%". Tutto funziona bene per i dati di esempio con 7 valori correnti, ma ho bisogno di un ciclo per questo. I super utenti possono indicarmi qual è l'errore che sto facendo nel mio ciclo for, questo aiuterà a imparare come implementare i cicli for.?
Qualsiasi aiuto ?
Ques2 - Qual è il modo migliore per ottenere i dati del 95% superiore?
Qualche aiuto qui?
ScriptingOggetto: problema nello script JMP per loopCredo che lo script seguente sia una metodologia più semplice per ottenere i risultati desiderati

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);
Oggetto: problema nello script JMP per loopSì, perfettamente a posto. Modo molto migliore e più semplice per farlo. Non ero a conoscenza del fatto che possiamo ottenere anche il quantile dalla tabella di riepilogo. Lo sto implementando nel modo che hai descritto.
A parte il quantile e i dati del 10% superiore, qualsiasi commento cosa c'era di sbagliato nel mio "ciclo for"?
Grazie per l'aiuto.
Oggetto: problema nello script JMP per loopRiguardo alla logica del ciclo For ()
- Una colonna può avere solo 1 formula. Avere la definizione della formula all'interno del ciclo For () specificherebbe una formula diversa per ogni ciclo. Non so esattamente cosa farebbe JMP, nella migliore delle ipotesi, sostituirebbe ogni formula quando ne veniva creata una nuova, finendo con solo l'ultima creata.
- Impostando il valore "Fallito" all'interno di ogni If, l'unica volta che la tua logica sarebbe accurata, è se Last Level è il livello per la riga corrente. Altrimenti, diciamo, il livello 3 è il livello corrente per la riga data. JMP imposta il valore nell'istruzione If per Livello 1 su Fallito, Livello 2, su Fallito, Livello 3 su Top10%, ma il ciclo For () continua, quindi il test per il Livello 4 risulterà in Fallito .... ..... e tutti gli altri livelli.
- Con una formula per una colonna che ha valori variabili definiti al di fuori della formula (cioè dtF2, dtQ e i riferimenti alle colonne nella tabella dati dtQ), quei valori e la tabella dati dovranno essere presenti ogni volta che la tabella dati con il la formula è aperta. Quindi quello che devi fare, quando usi tali formule, è eliminare la formula, una volta che la tabella dei dati ha eseguito la formula.
dtF2:Name("Top10%") << delete formula;
Ecco una versione della formula che penso possa funzionare ..... Non l'ho testata, ma penso che vedrai l'approccio.
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);