Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti sovrapposti?CIAO,
Ho una tabella dati con esperimenti continui ripetuti. Quindi i dati sono già impilati. Ho una colonna in cui ogni nuovo esperimento inizia con 1, poi 2 e così via fino all'ultima misurazione. Voglio creare una nuova colonna con il numero dell'esperimento, quindi ogni volta che l'altra colonna inizia con 1, quello è l'inizio di un altro esperimento.
Ho provato a scrivere questo script con l'aiuto dell'AI ma non funziona. Spero che qualcuno possa aiutarmi.
dt = Tabella dati corrente();
// Colonna utilizzata per identificare nuovi esperimenti
experimentIdentifier = Column(dt, "Column1"); // È la Colonna1 che contiene numeri da 1 a 100 che si ripetono più e più volte.
// Crea una nuova colonna per i numeri campione
dt << Nuova colonna("SampleNumber", Numerico);
// Inizializza le variabili
currentExperiment = experimentIdentifier[1];
numerocampione = 1;
// Eseguire l'iterazione su ogni riga utilizzando l'indicizzazione esplicita delle righe
Per(i = 1, i <= N Riga(dt), i++,
Se(experimentIdentifier[i] != currentExperiment,
// Inizia un nuovo esperimento, reimposta il numero del campione
currentExperiment = experimentIdentifier[i];
numerocampione = 1;
,
// Altrimenti, incrementa il numero del campione
numerocampione++;
);
// Assegna il numero del campione alla nuova colonna
dt:NumeroCampione[i] = NumeroCampione;
);
Automazione e scriptingFusione e pulizia dei datiR: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti sovrapposti?Crea una nuova colonna e imposta questa come formula:
Col Cumulative Sum( 1, :Column 1 )
La colonna 1 è la colonna che contiene i numeri delle misurazioni.
Scorreggia cerebrale.
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti sovrapposti?Length( Loc( :Column 1[1 :: Row()], 1 ) )
Questa formula funziona.
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti sovrapposti?È possibile utilizzare Col Cumulative Sum(), ma non è altrettanto gradevole alla vista.
Col Cumulative Sum( If( :Column 1 == 1, :Column 1, 0 ) )
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti sovrapposti?Non capisco come usarlo in uno script.
Ho provato anch'io, ma finora tutte le righe nella mia nuova colonna hanno valore 1. Riesci a vedere cosa non funziona?
dt = dati correnti Tabella () << Nuova colonna("Numero esperimento",
Numerico,
Formula(
If( Row() == 1, 1, // Inizializza il numero dell'esperimento come 1 per la prima riga
If( :Punto n. == 1 & Lag(:Punto n.) != 1, Lag(:Esperimento n.) + 1, // Incrementa il numero dell'esperimento se "Punto n." viene reimpostato a 1
Lag(:Experiment No, 1) // Altrimenti, mantieni lo stesso numero di esperimento
)
)
)
);
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti in pila?Ciao @WhiteCow2000 ,
Ho provato a farlo prendendo la posizione in cui appare "1", contrassegnando ciascuna di esse con un numero crescente, quindi copiando l'opzione "Riempi > Sostituisci valore mancante con valore precedente", che può essere eseguita manualmente in JMP. Ho aggiunto una finestra per selezionare la colonna da misurare per renderla più flessibile.
Names Default To Here( 1 );
dt = current data Table ();
dt << Clear Column Selection();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way then it will adapt to that so be careful.
//Window to select the column with repeats
nw = New Window( "Launch Dialog",
<<MODAL></MODAL>
<P>La versione semplice dello script in cui dovresti digitare i nomi esatti delle colonne in JSL è questa:<BR /><BR /></P>
<CODE class=" language-jsl">Names Default To Here( 1 );
dt = current data Table ();
//This will work to find the instance where the lowest number (1 in this case) appears in the row order, if the rows are sorted in any way
//Window to select the column with repeats
//Add a column to track experiment number
dt<<NEW column=""></NEW>
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti in pila?L'intelligenza artificiale è piuttosto scarsa con JSL. Applicare la mia soluzione è semplice. Inoltre, ho provato la tua ultima formula e ha funzionato bene.
dt = New Table( New Column( "Point No.", Set Values( Repeat( 1 :: 100, 4 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Length( Loc( :Point No.[1 :: Row()], 1 ) ) ) );
dt << New Column( "Experiment No", Numeric, Formula( Col Cumulative Sum( If( :Point No. == 1, :Point No., 1, 0 ) ) ) );
dt << New Column( "Experiment No",
Numeric,
Formula(
If( Row() == 1,
1, // Initialize experiment number as 1 for the first row
If( :Point No. == 1<SPAN> & Lag(:Point No.) != 1</SPAN>,
Lag( :Experiment No ) + 1, // Increment experiment number if "Point No." resets to 1
Lag( :Experiment No, 1 ) // Otherwise, keep the same experiment number
)
)
)
);

R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti in pila?Grazie mille per tutto il tuo aiuto! Ora funziona sia con la formula Se che con la formula Lunghezza!
R: Come creare una nuova colonna con il numero dell'esperimento in una tabella dati con dati continui ripetuti in pila?Ritornando su questo argomento qualche settimana dopo, vorrei condividere una bella soluzione a un problema simile, che credo potrebbe funzionare meglio con una formula più semplice:
Risolto: Come ottenere una nuova colonna per popolare i cicli in un set di dati di grandi dimensioni per più cicli o... - Community di utenti JMP