Non sono sicuro che sia possibile ...Ho una tabella di dati che ha una colonna che è 1 o 2 (il suo canale chiamato). In un'altra colonna c'è la designazione di un "test". È numerico come 10 o 20 o 30.
Quello che vorrei è creare un'altra colonna che conceda tutti i 'test' per il canale 1 e poi per il canale 2. Quindi ogni riga di dati avrà una colonna che ha il concatenamento del test basato sul canale. Quindi potrebbe sembrare 10 | 30 | 80 per il canale 1 ma 20 | 40 | 30 per il canale 2.
La tabella dati potrebbe contenere 1000 righe di dati di risultati di test diversi. Mi interessa vedere quale canale utilizza quale test per macchina. Poiché macchine diverse possono avere test diversi su canali diversi.
Potrei anche aver bisogno di aggiungere un altro qualificatore. In modo che il "test" sia concesso non solo dal canale del canale ma anche dalla macchina (che è indicata da un numero di serie).
Questo sarebbe nello script per essere incluso in una query post-script.
Tutti i suggerimenti sono apprezzati!
ScriptingRi: Non sono sicuro che sia possibile ...Fare quello che vuoi non sarà molto difficile. Tuttavia, la tua descrizione è un po 'confusa. Sarebbe possibile per te fornire un piccolo esempio della tabella dei dati e cosa vuoi come questa nuova colonna che stai proponendo?Ri: Non sono sicuro che sia possibile ...Sicuramente in allegato è una tabella di esempio. È elencata solo 1 macchina, ma più di 1 potrebbe essere inserita nella tabella. Inoltre, nel tempo il numero di test per canale potrebbe cambiare.
Posso tabulare i dati per ottenere quale canale ha quale numero di test per data, ma c'è un modo per indicarlo in una colonna per ogni riga di dati. Il testinitiationdatelocal potrebbe essere utilizzato come data breve per ottenere la giornata.
Ri: Non sono sicuro che sia possibile ...Sicuramente in allegato è una tabella di esempio. È elencata solo 1 macchina, ma più di 1 potrebbe essere inserita nella tabella. Inoltre, nel tempo il numero di test per canale potrebbe cambiare.
Posso tabulare i dati per ottenere quale canale ha quale numero di test per data, ma c'è un modo per indicarlo in una colonna per ogni riga di dati. Il testinitiationdatelocal potrebbe essere utilizzato come data breve per ottenere la "data"
Ri: Non sono sicuro che sia possibile ...Ecco uno script che calcola i test in una singola colonna. Rendi la tua tabella con i dati del numero di prova la tabella dati attiva, facendo clic su di essa, quindi esegui questo script.
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );
Ri: Non sono sicuro che sia possibile ...Wow! sorprendente! Grazie!
Ri: Non sono sicuro che sia possibile ...Quindi come includerei un elemento di data? Nell'esempiov2 c'è una colonna con la data. 1 Il punto dati per il canale 2 utilizza il Test 40, quindi dovrebbe essere visualizzato per i dati a partire da quella data (7/4). Non dovrebbe apparire per le altre righe per altre date per il canale 2 poiché quelle date test 40 non sono state utilizzate.
Ri: Non sono sicuro che sia possibile ...Tutto quello che penso debba essere
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Date, :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Date"),
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Date = :Date, :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );
fatto, è aggiungere Data come colonna di classificazione aggiuntiva, come "Macchina" e "Canale".
Ri: Non sono sicuro che sia possibile ...Vedo.
Quando l'ho applicato, lo script ha funzionato. Solo che ho notato che nei dati mancavano alcune righe. Non riesco a capire cosa sta succedendo con queste righe e perché non funzionerà.
Ri: Non sono sicuro che sia possibile ...Non sono riuscito ad aggiungere la data [i] vs. Data [i-1]. L'ho aggiunto alla riga 29 e lo script sembra funzionare ....... per favore dai un'occhiata
names default to here(1);
// Set up a handle to point to the example data table
dt=current data table();
// Find the testnumbers for each machine/channel combination
dtSumm = dt << summary(
Group( :Date, :Machine, :Channel,:testnumber),
N,
Link to original data table(0)
);
// Create a new table to accumulate the testnumbers into a single value
dtFinal = New Table("Concat Test Number",
New Column("Date"),
New Column("Machine", character),
New Column("Channel"),
New Column("Tests", character)
);
For(i=1,i<=N Rows(dtSumm), i++,
If(i==1,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtSumm:Date[i] != dtSumm:Date[i-1] | dtSumm:Machine[i] != dtSumm:Machine[i-1] |
dtSumm:Channel[i] != dtSumm:Channel[i-1]
,
dtFinal << add Rows(1);
dtFinal:Date[N Rows(dtFinal)] = dtSumm:Date[i];
dtFinal:Machine[N Rows(dtFinal)] = dtSumm:Machine[i];
dtFinal:Channel[N Rows(dtFinal)] = dtSumm:Channel[i];
dtFinal:Tests[N Rows(dtFinal)] = char( dtSumm:testnumber[i])
,
dtFinal:Tests[N Rows(dtFinal)] = dtFinal:Tests[N Rows(dtFinal)] || "/" || char( dtSumm:testnumber[i])
)
);
// Merge the new column back to the origianl table
dt = dt << Update(
With( dtFinal ),
Match Columns( :Date = :Date, :Machine = :Machine, :channel = :Channel )
);
close( dtSumm, nosave );
close( dtFinal, nosave );Ri: Non sono sicuro che sia possibile ...- È necessario leggere la Guida allo scripting nella libreria di documentazione di JMP
- Sì, la sintassi è diversa, che è ciò che imparerai leggendo la documentazione. Il JSL che suggerisci e che ho modificato di seguito funzionerà per una formula di colonna. Se questo fosse in codice JSL aperto, i riferimenti a sampletype e sampleid richiederebbero un indice che punta alla riga in questione.
If( :sampletype == "Control" & contains(:sampleid,"Neg"), Col Max( :results))
Ri: Non sono sicuro che sia possibile ...Avevo giusto per il contiene .... ma ho fatto errori altrimenti perché era una formula più complicata ... sciocco io
Ri: Non sono sicuro che sia possibile ...Leggerò di più la guida!Ri: Non sono sicuro che sia possibile ...Grazie!
Funziona alla grande!
In un'istruzione If si può avere qualcosa
If (:sampletype =="Conrol" & :sampleid contains "Neg", Col Max(:results), .)