Equivalente contese?Sto cercando di trovare una funzione formula JMP equivalente alla funzione Countif di Excel, che punta a una colonna e restituisce il numero di righe uguali al valore nella riga corrente, come otterresti se eseguissi un riepilogo su quella riga .
In altre parole, se ho una tabella da 1000 righe e la colonna Colore è impostata su "Viola" in 27 righe, desidero una formula per una nuova riga che restituisca 27 per quelle righe (e il valore applicabile per le altre righe)
(Sono sicuro che questo sia qui, ma **bleep** se riesco a trovarlo)
JMP17, macOS
Personalizzazione di massaRi: Equivalente Countif?Vicino, penso. Non sono mai stato in quel codice C++, ma credo che alla prima chiamata (in genere per la riga 1) preelabora tutte le righe per memorizzare nella cache tutte le possibili risposte per valore. Quindi a tutte le righe successive viene data risposta da quella cache per valore. (Senza la cache sarebbe un tempo order(N^2) per N righe, con la cache solo order(N) - tempo lineare.)
Ri: Equivalente Countif?Questo ha senso, ma poi la funzione Col Sum() sta eseguendo l'iterazione su qualcosa...
Immagino che stia scorrendo le righe che corrispondono al valore corrente nelle colonne byVar, valutando l'espressione per ciascuna di esse, quindi sommando tutti i risultati di tali valutazioni.
Ho ragione?Se è così, quella dicitura mi sarebbe stata molto utile nella documentazione dell'indice di scripting Col Sum().
Ri: Equivalente Countif?Pensa al primo argomento come a un'espressione. Un'espressione può essere
- 42
- :altezza
- :altezza *2 > :peso
- if ( :altezza *2 > :peso, età, 99 )
- if ( :altezza>60 & :peso> 100, 1, 0 )
Tutti questi vengono valutati nel contesto della riga corrente, quindi utilizzando i valori di altezza, peso ed età della riga corrente. L'operatore > restituisce 1 per vero e 0 per falso, quindi anche quello può essere sommato. L'if restituisce età o 99 su ciascuna riga e viene sommato. E solo usando :height viene valutato anche per restituire il valore della riga corrente.
Lo ammetto, ho guardato @jthi esempio per un minuto prima di capirlo. Se lo inserisci nel codice, aggiungi un commento per chi dovrà mantenerlo in seguito!
Ri: Equivalente Countif?@Craige_Hales Quindi, se la prima voce è un oggetto colonna, la funzione Col Sum() passa sopra i valori nella colonna (rispettando l'impostazione byVar) sommando i valori, ma se la prima voce è solo un numero usa semplicemente quello?
La prima voce può essere un'espressione che restituisce un valore?
Può anche restituire un elenco che viene scavalcato in modo simile a fornire un oggetto colonna?Cosa succede se la lunghezza di quell'elenco non corrisponde alla lunghezza dell'elenco byVar?
Questo comportamento interno di JMP è affascinante e mi piacerebbe saperne di più, ma non riesco a trovare nulla nella documentazione che mi aiuti a sviluppare un modello mentale di ciò che sta facendo in casi come questo...
Nota, countif è una funzione Excel che conta tutti gli elementi di un intervallo di celle che soddisfano alcuni criteri.Non penso che Col Sum() faccia esattamente questo, non sembra esserci un modo per usarlo per contare il numero di casi in cui col1 > 7 e col2 == 15, per esempio.
Ri: Equivalente Countif?@Audrey_Shull forse il @jthi example può essere aggiunto all'indice di scripting con una spiegazione, qualcosa come "Il primo argomento della formula di colonna è un'espressione che viene valutata per ogni riga. Di solito è una colonna, che somma i valori della colonna, ma in questo esempio è una costante 1 che somma il conteggio delle righe. Ciò è utile in questo esempio perché il secondo argomento è la colonna per, che fa sì che le somme siano per ciascun valore."
L'aggiunta della parola chiave countif potrebbe aiutare qualcuno a trovarla in futuro (non sono esperto di Excel, quindi magari cercare prima countif...)
Ri: Equivalente Countif?Sta usando 1 per il valore della riga invece di un valore specifico trovato dalla riga di qualche colonna.
Modifica: in questo caso penso che anche l'uso di Col Number(:Column 1, :Column 1) dovrebbe funzionare.
Ri: Equivalente Countif?@jthi : Il testo della guida dice che il primo argomento di Col Sum() è "xCol", ma lì dentro c'è solo un "1".Cosa ci fa JMP con quel numero 1 qui?
(Questo è molto utile, anche oggi abbiamo avuto questa domanda.)
Ri: Equivalente Countif?Quale testo di aiuto intendi e cosa non è intuitivo?Col Sum(nome,)
Inoltre da Scripting Index (disponibile nel menu Guida di JMP) è possibile ottenere script dimostrativi eseguibili che a volte possono essere utili

Ri: Equivalente Countif?Esattamente - grazie!
(e il testo della guida di JMP su Col Sum sicuramente non è intuitivo...)
Ri: Equivalente Countif?Qualcosa come questo?

Col Sum(1, :Column 1)
Re: Countif equivale?@Audrey_Shull Se hai intenzione di aggiungere l'esempio di @jthi in una futura versione di Scripting Index o della Guida in linea, aggiungi anche un paragrafo sulla magia di
https://community.jmp.com/t5/Discussions/JMP-equivalent-of-Excel-s-COUNTIF-function/mp/783500/highlight/true#M96784