Ciao a tutti,
Sono molto nuovo nell'utilizzo di software statistici più potenti e sto lentamente imparando le corde. Sono bravo a implementare il feedback, ma non così bravo nella mia ricerca.
Lavoro con le batterie. Raccogliamo un sacco di dati e utilizziamo diversi test a seconda di ciò che vogliamo scoprire. I dati generati sono di natura ciclica, poiché carichiamo la cella, la riposiamo, la scarichiamo e la riposiamo di nuovo. Questi sono chiamati passaggi.
In un test (li chiamo corse), potremmo avere diversi cicli in un regime, quindi diversi cicli in un altro. Pertanto, è importante per me essere in grado di tenere traccia delle risposte (correnti, tensioni, capacità, energie, ecc.) come fattori di cicli, passaggi e corse.
Sulla mia query: ho bisogno di una formula di colonna che inizi da 11 e quindi aumenti di un valore di 1 ogni 4 righe. Questa colonna terrà traccia del numero totale di cicli su più esecuzioni. Il motivo per cui deve aumentare di 4 è che questo è il numero di passaggi che ci sono in ogni ciclo.
Per chiarire meglio, faccio un esempio.
La colonna 1 è denominata Esegui. Tiene traccia del numero di un particolare test in serie.
La colonna 2 è denominata Total Cycle Number. Questa è la colonna che devo codificare correttamente.
La colonna 3 è denominata Numero di ciclo effettivo. Descrive il numero di ciclo di un particolare test. Questi valori sono ciclici e tornano a 1 all'inizio di ogni nuova esecuzione. Il loro limite superiore non è coerente. I valori si ripetono anche a seconda del numero di passaggi presenti in ciascun ciclo. Un esempio dei valori sarebbe 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,1,1,1,1,2,2 ,2,2, ecc.
La colonna 5 è denominata RawStepID. Si reimposta su 1 all'inizio di ogni ciclo. Un esempio potrebbe essere 1,2,3,4,1,2,3,4,1,2,3,4, ecc.
La colonna 6+ è qualsiasi dato ottenuto.
Il mio approccio finora alla Colonna 2 è stato quello di provare a preparare un'istruzione IF con una variabile locale. Voglio che incrementi questa variabile di un valore di 1 ogni volta RawStepID == 1. Ho bisogno che inizi alle 11, poi diventi 12 quando RawStepID=1, diventi 13 la prossima volta RawStepID=1, ecc. Quindi ho bisogno della formula per visualizzare il valore corrente della variabile.
Cioè, se utilizzo i dati che ho digitato per la colonna 3, ho bisogno che i valori di questa colonna diventino
11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15,16,16,16,16,17, 17,17,17,18,18,18,18, ecc.
Spero che questo sia chiaro. Nel frattempo cercherò di capire come includere una tabella in un post del forum come ho visto fare altri membri, o in caso contrario creare una tabella fittizia da allegare qui.
Grazie,
Antilope spaventata.
Ciao @ih ,
Grazie! Il secondo approccio che hai fornito è esattamente quello che stavo cercando di implementare. Non condividerò l'aspetto del mio codice, ma posso assicurarti che si trattava di spaghetti del tipo più bollito.
Se ho capito bene, è anche una soluzione molto flessibile. Posso modificare il numero iniziale della riga modificando l'11 nella riga 2, posso modificare l'incremento modificando il ritardo del numero totale di cicli alla fine della riga 3 e posso vedere come adattare questo codice all'incremento, ad esempio il Eseguire il valore ogni volta che il numero di ciclo effettivo torna a 1.
If(
Row() == 1, 23,
:ActualCycleNumber == 1 & Lag ( :ActualCycleNumber ) != 1, Lag ( :Run ) + 1,
Lag ( :Run )
)
Non capisco l'effetto della seconda condizione per l'incremento del numero totale di cicli. O come usare Lag in generale. Potresti spiegarmi o indicarmi una buona risorsa per apprendere tali principi?
CIAO @statman
Questo è il caso di questo particolare scenario, sì. Tuttavia, Total Cycle Number è qualcosa che utilizzo ampiamente nelle query per tenere traccia dei dati su più esecuzioni. Quindi, ad esempio, potrei avere questa tabella specifica per l'esecuzione 1 e un'altra tabella per i dati specifici dell'esecuzione 2. In entrambi, il numero di ciclo effettivo inizierà da 1 e aumenterà fino a qualsiasi valore (definito all'interno del test). Tuttavia, il numero totale di cicli inizierà dalla somma cumulativa dei numeri di ciclo effettivi sperimentati da quella batteria in tutte le corse.
Un altro modo per vederlo è che il numero di ciclo effettivo è costituito dai dati grezzi che ottengo dal mio software sperimentale, mentre il numero di ciclo totale è costituito da dati elaborati. E un ultimo esempio:
L'esecuzione 1 contiene 30 cicli. In questo caso, sia il ciclo totale che il numero di ciclo effettivo inizieranno da 1 e termineranno a 30. L'esecuzione 2 contiene 15 cicli. Il numero totale di cicli inizierà a 31 e terminerà a 45. Il numero effettivo del ciclo inizierà alle 1 e terminerà alle 15. L'esecuzione 3 contiene 102 cicli. Il totale inizia a 46, finisce a 147, Actual inizia a 1 finisce a 102, ecc. ecc. Spesso questo tipo di incremento avviene all'interno della stessa tabella di dati. Tenere traccia del numero totale di cicli in tutte le corse è molto utile per l'analisi, poiché questo è uno dei fattori chiave per la salute della batteria.
Spero che questo chiarisca il mio bisogno di dati così come sono!
A quali domande stai cercando di rispondere? Una rapida occhiata, la colonna 2 (11,11,11,11,12...) sarà confusa con la colonna 1 (1,1,1,1,2...) quindi non sarebbe utile. Ogni colonna deve essere una X o una Y univoca.
CIAO @ScaredAntelope ,
Due modi in cui potresti avvicinarti alla colonna 2 "Numero totale di cicli" potrebbero essere quelli di definirlo esplicitamente per riga:
11 + Floor( (Row() - 1) / 4 )

o calcolalo nel modo in cui penso che tu lo stia facendo ora:
If(
Row() == 1, 11,
:RawStepID == 1 & Lag( :RawStepID ) != 1, Lag( :Total Cycle Number ) + 1,
Lag( :Total Cycle Number )
)

Notare le due condizioni necessarie per incrementare il numero di cicli totali nella condizione centrale. Potresti estenderlo per controllare anche altre colonne, ad esempio forse anche il numero di ciclo effettivo dovrebbe essere 1.