Come fare un sommario cumulativo su una colonna numerica<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Mi piacerebbe un modo conveniente in JMP per fare un sommario cumulativo su una determinata colonna, dove per ogni valore della colonna di destinazione, ti viene detto quante righe (elementi) hanno incontrato un limite di quel valore in quella colonna ( minore o uguale a , maggiore o uguale a , meno di , o più grande di ).
Ad esempio, iniziando con questa tabella:
| Petri Dish ID | N batteri |
|---|
| 0 | 100 |
| 1 | 103 |
| 2 | 98 |
| 3 | 98 |
| 4 | 102 |
| 5 | 97 |
Potrei voler generare il numero di piastre di Petri che avevano meno o uguale a ogni quantità di batteri, potenzialmente come questo:
| Al massimo N batteri | N Petri Dishes |
|---|
| 96 | 0 |
| 97 | 1 |
| 98 | 3 |
| 99 | 3 |
| 100 | 4 |
| 101 | 4 |
| 102 | 5 |
| 103 | 6 |
| 104 | 6 |
Allo stesso modo, potrei volere colonne per Almeno N batteri , Meno di N batteri , e Più di N batteri .
C'è un modo conveniente per farlo usando uno qualsiasi degli strumenti del menu e / o forse una colonna formula, o richiederebbe uno script JSL? Richiederebbe preordinare la tabella originale sulla colonna di destinazione (N Bacteria)? Ci sono componenti aggiuntivi che farebbero questo?
Nota: in MS Excel questo potrebbe essere fatto usando il " COUNTIF "funzione adiacente a una colonna" Al massimo N Bacteria "(o qualunque altro limite) creata manualmente.
Grazie.
Ri: Come fare un sommario cumulativo su una colonna numericaEval (Eval Expr (Col Sum (: N Bacteria <= Expr (: Threshold [Row ()]))))
Per ogni dato valore nella colonna Soglia, vogliamo creare un vettore di colonne di flag 0/1 che simboleggiano quali righe nella colonna di batteri: N (l'intera colonna) soddisfano la disuguaglianza.
Supponiamo che la riga 3 della colonna Soglia sia 98. Quindi il vettore è prodotto da:
: N Bacteria <= 98, che confronta ogni riga della colonna: N Bacteria a 98 e crea uno 0 o 1 di conseguenza.
La funzione Col Sum () somma gli 0 e gli 1 nel vettore prodotto da: N Bacteria <= 98. La somma rappresenta il numero di righe in cui: N Batteri <= 98.
Il pezzo: Threshold [row ()] è: Threshold [1] per row 1, Threshold [2] per row 2, ecc. Il problema è che dobbiamo valutare il valore di row (), sostituendo il valore costante effettivo contenuto nella tabella di dati, prima di valutare il resto della formula.
Quindi, usiamo il costrutto Expr (: Threshold [Row ()]), che, se usato in congiunzione con il costrutto'Eval (EvalExpr ()), causa: Threshold [row ()] da sostituire con qualsiasi valore contenuto nel : Riga "rowth" della colonna di soglia.
Saluti,
Brady
Ri: Come fare un sommario cumulativo su una colonna numericaGrazie per questa formula Brady. Sono ancora confuso riguardo le particolarità del perché è necessario usare un pedice ([]) per Soglia ma non per N batteri e perché è necessario utilizzare "Espr" e "Eval Expr" in questi modi. Come funziona il caching dei valori indesiderati e come funziona questa formula per far sì che produca il risultato corretto? Puoi per favore approfondire questi dettagli?
Ri: Come fare un sommario cumulativo su una colonna numericaPuoi farlo con la seguente formula; cambia semplicemente la disuguaglianza per riflettere le tue esigenze.
Eval (Eval Expr (Col Sum (: N Bacteria <= Expr (: Threshold [Row ()]))))
In questo esempio, le colonne di riepilogo vengono create nella stessa tabella dei dati non elaborati. (Guardare il file allegato.)
Nota che Soglia e Conteggio in questa formula corrispondono alle colonne nella seconda tabella del tuo post originale.
Il costrutto Eval (Eval Expr ()) è necessario per forzare la valutazione del valore di Soglia ad ogni riga data; per esempio, se provi la formula qui sotto, non ti darà i risultati che intendi.
Col Sum (: N Bacteria <=: Threshold [Row ()])
Saluti,
Brady