Sto cercando di capire come lavorare con oggetti che sono contenitori di righe. Anche questa descrizione potrebbe essere errata.
Cosa si intende per "FilteredRows" in questo contesto?
dt = Current Data Table();
FilteredRows = dt << get rows where( :Date == 12May2025 );
Show( N Rows( FilteredRows ) );
Tornando un po' indietro, esiste un comando JSL per impostare un oggetto su TUTTE le righe di una tabella dati? O non è mai necessario?
La soluzione più vicina che riesco a trovare per evitare "Seleziona tutte le righe" è:
AllRows = dt << ottieni righe where(1);
Sembra quasi un imbroglio.
Ancora più importante, vorrei poter applicare filtri aggiuntivi a un sottoinsieme di righe
Questo non funziona, ma trasmette l'intento:
XFilteredRows = dt << ottieni righe dove( :X == 42 );
XYFilteredRows = XFilteredRows << ottieni righe where(:Y ==1.21);
Sì, posso fare entrambe le cose in una riga
XYFiteredRows = dt << ottieni righe dove(:X==42 & :Y==1.21);
Tuttavia, ho intenzione di utilizzarlo in un ciclo For Each Row, in cui X rimuove il 99% delle righe e successivamente dovrò filtrare più parametri in modo indipendente, ovvero le righe che soddisfano XY, le righe che soddisfano XZ e le righe che soddisfano X ma non Y, ecc...
Credo che su tabelle di grandi dimensioni sarà più veloce mantenere le righe filtrate X.
A questo proposito, un risultato che sto cercando di ottenere è molto simile al risultato "Raggruppa per", ma con una formula personalizzata.
JSL di una formula di colonna:
Col Media( :Parametro, :X )
'Raggruppa per' è molto comodo per creare formule di colonna da funzioni integrate, ma quando voglio fare calcoli più complessi non so come ottenere lo stesso effetto di raggruppamento.
Il "contenitore" è una "matrice" (unidimensionale).
puoi anche creare una matrice manualmente:
myRows= Matrice ({1,2,3})
mieRighe = 1::3
le mie righe = [1, 2, 3]
Ci sono 2 modi per intersecare (e altre operazioni sugli insiemi come unione, differenza)
a) utilizzando array associativi
aa1 = associative array (myRows1);
aa2 = associative array (myRows2);
aa1 << intersect(aa2);<BR />// aa1 << remove(aa2);
list of rows = aa1 << get keys;
rows= matrix(list of rows);

b) [novità in JMP19]: utilizzo di elenchi
list1 = as list (myRows1);
list2 = as list (myRows2);
<STRIKE>
list of rows = set intersect(list1, list2);
</STRIKE>
list of rows = set intersection(list1, list2);
//list of rows = set difference(list1, list2);
rows= matrix(list of rows);

Intersezioni per matrici? Immagino: no
hogi,
Mi hai salvato di nuovo. Grazie!
Una precisazione, ho usato la tua sintassi
list of rows = set intersect(list1, list2);
Inizialmente è diventato blu, quindi ho pensato che andasse bene, ma è strano che non fosse in maiuscolo. Poi ho cercato nella guida allo scripting e ho capito che si chiamava "Set Intersection". Ora sono pronto. Salute!