come faccio a creare due cicli nidificati?Salve, sto tentando di scrivere uno script che segua questo flusso di lavoro:
1 - inizia un ciclo in una data e ora di inizio specifica (ad es. 1 ottobre 2021 11:00).Mi riferirò a questo come riga n.Ottenere il valore da col1[riga n].
2 - vai alla riga successiva, n+1. porre col2 = col1 [n+1] - col1[n].
3 - vai alla riga successiva, n+2, imposta col2 = col1 [n+2] - col1[n]
4 - vai alla riga successiva, n+3, imposta col2 = col1[ n+3] - col1[n].Continua a scorrere ogni riga successiva fino a datetime[n+k] = datetime[n] + 7 giorni.(Notare che k varierà a seconda dell'incremento di tempo tra le righe man mano che il ciclo procede; ad esempio, il tempo aumenta da una riga all'altra di 5 minuti, 15 minuti, 1 ora, ecc., a seconda della riga in questione.)
5 - Ripeti i passaggi da 1 a 4 per ogni nuova settimana di dati utilizzando una nuova "data di inizio" ottenuta nel passaggio 4. Continua a scorrere altri 7 giorni di dati.
6 - Ripetere il passaggio 5 finché la tabella dati non esaurisce le righe.
L'obiettivo è eseguire calcoli sui dati col1 che confrontino il numero di righe di una settimana con la prima riga di quella settimana, quindi ripeterlo più e più volte per ogni settimana successiva (settimana 2, settimana 3, settimana 4, ecc.) righe sono state elaborate.:)
Qualità e ingegneria di processoRi: come faccio a creare due cicli nidificati?Grazie Vince!Questo sarà utile.Penso di essere sulla strada giusta adesso.:)
Ri: come faccio a creare due cicli nidificati?Ok, sembra che tu stia dicendo
Sottrarre il primo punto di flusso ogni giorno da ciascun flusso?È questo che stai cercando di fare?Immagino perché non credo che le 13:15 siano una cosa.:D
Names default to here(1);
dt = current data table(); // this assumes your table
// I'm going to make a bunch of extra columns to kind of show you smaller steps
// we really want to be able to say, This is the first row of the day
// so let's make a date column
dt << New Column("Just Date", <<FORMULA></FORMULA>
tu una volta che hai la riga più piccola per il giorno, devi solo fare l'ultima nuova colonna tutte le volte per quante colonne vuoi calcolare la differenza.
Spero di non aver complicato eccessivamente le cose, perché sicuramente non ho risposto alla tua domanda originale sui cicli nidificati.
Ri: come faccio a creare due cicli nidificati?Ho appena creato una tabella di esempio di quello che immagino tu stessi dicendo.L'ho appena fatto oggi() + 1 secondo per riga.
Non sapevo nulla della tua tabella, quindi ho fatto in modo che facesse tutte le colonne.
e non riesco a capire il tuo post originale.
Ri: come faccio a creare due cicli nidificati?Lo script ha prodotto una nuova tabella con 5 righe e le seguenti 6 colonne:
settimana1, settimana2, settimana3, confronto settimana1, confronto settimana2, confronto settimana3.
(Le 5 righe erano per le date dal 13/10/2021 8:18:05 al 13/10/2021 8:18:09).
Sto cercando di finire con una sola nuova colonna nella mia tabella esistente, una colonna con i risultati del calcolo descritto nel mio post originale.Avrei tutte le righe della tabella dati originale insieme a una nuova colonna calcolata in base alla descrizione nel mio post originale.
Ri: come faccio a creare due cicli nidificati?Per il contesto, in allegato è la mia vera tabella JMP se aiuta.(Voglio calcolare in base alla colonna "Pred Formula LOG_ECOLI_PEAR".)
Ri: come faccio a creare due cicli nidificati?Grazie Vince.Lo sto affrontando ora .... come principiante di JSL (!) Ho un paio di domande che mi aiuteranno a seguire il tuo approccio.Perché sono state aggiunte 5 righe a una nuova tabella di dati?Perché hai bisogno di "impostare i valori" e perché sono stati selezionati quei cinque numeri?Il tuo script è per 3 settimane ma il mio set di dati effettivo ha circa 120 settimane.
Infine, come fa lo script a sapere quale colonna è il valore su cui calcolare (ovvero "flusso" nel mio esempio)?(La mia tabella di dati ha più colonne delle tre mostrate nel mio esempio.) Non sarebbe più facile assegnare il nome della colonna piuttosto che passare da una colonna all'altra?Probabilmente mi sto perdendo qualcosa qui.
Ri: come faccio a creare due cicli nidificati?Sicuro.Grazie.In allegato è riportato uno snippet di un set di dati che ho creato in Excel come esempio.
Ri: come faccio a creare due cicli nidificati?Penso che potresti dire qualcosa del genere?
Names default to here(1);
dt = New Table( "Untitled 1133",
Add Rows( 5 ),
New Column( "Week1",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
),
New Column( "Week3",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 22, 0 ),
Input Format( "d/m/y h:m:s", 0 ),
Set Values( [3716957885, 3716957886, 3716957887, 3716957888, 3716957889] )
)
);
nc = ncols(dt);
for(i=1, i<=nc, i++,
col_name = column(i) << Get Name(); // get the original column name
Eval(EvalExpr( // you have to do this so you can substitute in the actual col_name instead of a variable
dt << New Column(col_name || " comparison",
// just take current row minus first row
formula(Expr(column(dt, col_name))[row()]-Expr(column(dt, col_name))[1])
)
));
);
Ri: come faccio a creare due cicli nidificati?Puoi fornire una piccola tabella di dati con ciò che ti aspetti che siano i dati?O almeno com'è la tabella dati che stai usando? Sembra che una formula di colonna sarebbe una soluzione più semplice.