Sto cercando un modo per filtrare i dati su un grafico per includere solo i dati che si stanno accumulando o esaurendo. La versione semplice di questo è accumulare = concentrazione al punto temporale finale > concentrazione al punto temporale iniziale (o < se si esaurisce). Tuttavia, diventa leggermente più complicato a causa del fatto che il punto temporale finale non sarà sempre lo stesso: alcuni set di dati potrebbero essere nel corso di 12 giorni, altri potrebbero essere 14, ecc. È anche comune che ogni punto temporale sia realmente 3 si replica, quindi essere in grado di utilizzare la media di quelli quando si decide se le cose si stanno accumulando o si stanno esaurendo sarebbe l'ideale (in caso contrario, probabilmente non avrebbe molta importanza). Nell'immagine inclusa, ad esempio, vorrei essere in grado di filtrare e mostrare solo la linea blu per l'accumulo di analiti. Qualsiasi aiuto per iniziare sarebbe apprezzato! Il mio obiettivo è avere una colonna con un output di "accumulazione" o "esaurimento", in questo modo può essere semplicemente aggiunta al filtro dati. Grazie in anticipo!
Col Media() e altre funzioni Col simili (Col Min, Col Max,...) potrebbero essere utili. Se potessi fornire dati di esempio con una colonna che indica le risposte corrette, sarebbe possibile fornire esempi.
Ciao, ho allegato una versione trasformata/semplificata del tipo di dati con cui sto lavorando, se questo aiuta. Sono a conoscenza delle funzioni Col, ma ho faticato a mettere insieme le cose in un modo che funzioni
Poiché non è stata fornita alcuna colonna di risposta "corretta", ho fatto delle ipotesi. Questo script creerà colonne formula che dovrebbero aiutare a costruire la colonna finale. Ci sono anche altre opzioni quando si utilizzano le formule oppure è possibile utilizzare un metodo completamente diverso rispetto alle semplici formule
Names Default To Here(1);
dt = Open("$DOWNLOADS/Sample Data for JMP Forum.jmp");
dt << Sort(By(:Time), Order(Ascending), Replace Table); // to make this a bit simpler sort by :Time
// Assumption: Time and Analyte create a group
dt << New Column("Mean_TimeAnalyte", Numeric, Continuous, Formula(
Col Mean(:"Concentration (mM)"n, :Time, :Analyte)
));
// Assumption: We are looking for first and last average value for each Analyte
dt << New Column("FirstAnalyteValue", Numeric, Continuous, Formula(
Col Sum(
If(Row() == Col Min(Row(), :Analyte),
:Mean_TimeAnalyte
,
0
),
:Analyte
)
));
dt << New Column("LastAnalyteValue", Numeric, Continuous, Formula(
Col Sum(
If(Row() == Col Max(Row(), :Analyte),
:Mean_TimeAnalyte
,
0
),
:Analyte
)
));
dt << New Column("AnalyteStatus", Numeric, Continuous, Formula(
If(:LastAnalyteValue > :FirstAnalyteValue,
"Accumulating"
,
"Depleting"
);
));
gb = dt << Graph Builder(
Size(528, 492),
Show Control Panel(0),
Variables(
X(:Time),
Y(:"Concentration (mM)"n),
Group X(:AnalyteStatus),
Overlay(:Analyte)
),
Elements(
Points(X, Y, Legend(5), Summary Statistic("Mean")),
Line(X, Y, Legend(6))
),
Local Data Filter(Add Filter(columns(:AnalyteStatus)))
);

