unendo le matrici facendo corrispondere le colonne<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Qualcuno ha uno script elegante per unire matrici nel modo in cui unire le tabelle (abbinando le colonne)?
Ringraziando tutti voi in anticipo
Ron
Ri: unendo le matrici facendo corrispondere le colonneGrazie!
quindi penso di essere tornato ai miei vecchi comandi da tavolo, dopo tutto ....
Ri: unendo le matrici facendo corrispondere le colonneSì, tutte queste funzioni dovrebbero essere multithread.
Il multithreading in gran parte non è supportato in JSL (questa è per la maggior parte una buona cosa). Tuttavia, se ciò fosse vero per JMP stesso, il programma sarebbe super lento e inutilizzabile per un utente finale. La maggior parte dei comandi di invio '<<' tendono ad essere multithread b / c sono nativi di JMP, sebbene non tutti.
Prova semplicemente una funzione se hai una domanda. Ad esempio, apri il tuo Task Manager ed esegui qualcosa come questo:
dt = nuovo tavolo ( "test" ) ;
dt << Nuova colonna ( "test" , Numerico , Continuo , Valori ( 1 :: 100000000 )) ;
dt << Elimina righe ( 1 :: 100000000 ) ;
clost ( dt , nosave ) ;
Quando eseguo questo, è possibile vedere tutti e quattro i miei processori spino.

Ri: unendo le matrici facendo corrispondere le colonneGrazie msharp , questo è utile sapere.
per quanto riguarda il sommario della tabella? eliminare più righe? eliminare più colonne?
Ron
Ri: unendo le matrici facendo corrispondere le colonneDa quanto ne so, i join e alcune altre operazioni da tavolo sono le uniche operazioni multi-thread in JMP. Metterei tutti i miei soldi che un join di tabella sarebbe più veloce di un join di matrice.
Ri: unendo le matrici facendo corrispondere le colonneScusa, Ron. La mia risposta non era di implicare che non si potevano rendere casi specifici di "adesione" più veloce con le manipolazioni della matrice - Probabilmente si poteva. È solo che (come mostrano le opzioni in "Tabelle> Partecipa") l'unione non è "una cosa" e non conoscevo i dettagli del / i tuo / i caso / i.
Ri: unendo le matrici facendo corrispondere le colonneGrazie Ian @ JMP per la sceneggiatura e la mancia.
Sono d'accordo sul fatto che la potenza di JMP sia eccezionale e molto più semplice da utilizzare rispetto agli script di comandi grezzi che utilizzano le matrici. nel mio caso, inoltre, consente di risparmiare un sacco di tempo dal momento che posso fare in modo che "hands on" controlli che stia facendo ciò che intendevo usando l'interfaccia interattiva in qualsiasi momento.
la cosa è lo script che ho scritto in cui tutto il processo utilizza tabelle di dati - riassumere, unire, confrontare, cancellare righe ed estrarre valori. speravo di renderlo più veloce convertendolo in matrici, ma ho notato che non sarà così.
Ron
Ri: unendo le matrici facendo corrispondere le colonneSolo un po 'di lingua sulla guancia ti suggerisco quanto segue. Potrebbe sembrare perverso, ma, d'altra parte, fare in modo che JMP faccia il lavoro per te è sempre buono. In questo caso ci vorrebbe qualche sforzo per reinventare la flessibilità di "Join ()" nel mondo delle matrici.
NamesDefaultToHere ( 1 ) ;
// Unisce due matrici 'm1' e 'm2' usando le colonne chiave 'c1' e 'c2' (tutte le colonne sono mantenute)
joinMatrices =
Funzione ({ m1 , c1 , m2 , c2 } , { Locale predefinito } ,
dt1 = astable ( m1 , << Invisibile ) ;
dt2 = astable ( m2 , << Invisibile ) ;
// Modifica l'espressione 'Join ()' a piacere. . .
DT3 = dt1 << Aderire (
Con ( dt2 ) ,
Abbinando le colonne ( "Col" || carbonizzare ( c1 ) = "Col" || carbonizzare ( c2 ) ) ,
Drop multipli ( 0 , 0 ) ,
Includi non corrispondenti ( 0 , 0 ) ,
Mantieni l'ordine della tabella principale ( 1 ) ,
Invisibile
) ;
m3 = DT3 << getAsMatrix ;
Vicino ( dt1 , NOSAVE ) ;
Vicino ( dt2 , NOSAVE ) ;
Vicino ( DT3 , NOSAVE ) ;
m3 ;
) ;
// Crea un paio di matrici
n = 10 ; // Numero di righe
m1 = ( 1 :: n ) `|| J ( n , n , 10 ) ;
m2 = RandomShuffle ( m1 [ 0 , 1 ]) || Identità ( n ) ;
// Prova la funzione
joinMatrices ( m1 , 1 , m2 , 1 ) ;