joindre des matrices en faisant correspondre des colonnes<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Quelqu'un a-t-il un script élégant pour joindre des matrices, comme le fait de joindre des tables (en comparant des colonnes)?
En vous remerciant tous d'avance,
Ron
Re: joindre des matrices en faisant correspondre des colonnesMerci!
donc je suppose que je suis de retour à mes anciennes commandes de table après tout ....
Re: joindre des matrices en faisant correspondre des colonnesOui, toutes ces fonctions doivent être multithreads.
Le multithreading n’est généralement pas pris en charge dans JSL (c’est généralement une bonne chose). Toutefois, si cela était vrai pour JMP, le programme serait extrêmement lent et inutilisable pour un utilisateur final. La plupart des commandes d'envoi "<<" ont tendance à être multithreads, car elles sont natives de JMP, mais pas toutes.
Testez simplement une fonction si vous avez une question à ce sujet. Par exemple, ouvrez votre gestionnaire de tâches et exécutez quelque chose comme ceci:
dt = nouvelle table ( "tester" ) ;
dt << Nouvelle colonne ( "tester" , Numérique , Continu , Valeurs ( 1 :: 100000000 )) ;
dt << Supprimer des lignes ( 1 :: 100000000 ) ;
clost ( dt , nosave ) ;
Quand je lance ceci, vous pouvez voir les quatre processeurs pimenter.

Re: joindre des matrices en faisant correspondre des colonnesMerci msharp , c’est utile de savoir.
qu'en est-il du résumé de la table? supprimer plusieurs lignes? supprimer plusieurs colonnes?
Ron
Re: joindre des matrices en faisant correspondre des colonnesDe ma connaissance, les jointures et quelques autres opérations sur les tables sont les seules opérations multithread de JMP. Je mettrais tout mon argent qu'une table rejoint serait plus rapide qu'une matrice.
Re: joindre des matrices en faisant correspondre des colonnesDésolé Ron. Ma réponse n'était pas de laisser entendre que l'on ne pourrait pas rendre des cas spécifiques d'association plus rapide avec des manipulations matricielles - probablement. C'est juste que (comme le montrent les options dans "Tables> Joindre"), rejoindre n'est pas "une chose" et je ne connaissais pas les détails de vos cas.
Re: joindre des matrices en faisant correspondre des colonnesMerci Ian @ JMP pour le script et le conseil.
Je conviens que la puissance de JMP est exceptionnelle et beaucoup plus facile à utiliser que l’écriture de commandes grossières à l’aide de matrices. dans mon cas, cela permet également de gagner beaucoup de temps, car je peux rapidement effectuer des vérifications "pratiques" pour nous assurer qu'il fait ce que je voulais en utilisant l'interface interactive à tout moment.
la chose est le script que j'ai écrit dans lequel tout le processus utilise des tables de données - résumant, joignant, comparant, supprimant des lignes et extrayant des valeurs. J'espérais le rendre plus rapide en le convertissant en matrices mais je remarque que ce ne sera pas le cas.
Ron
Re: joindre des matrices en faisant correspondre des colonnesJe ne suggère que légèrement la langue dans la joue. Cela peut sembler pervers, mais en revanche, il est toujours bon que JMP fasse le travail à votre place. Dans ce cas, il faudrait un peu d'effort pour réinventer la flexibilité de 'Join ()' dans le monde des matrices.
NamesDefaultToHere ( 1 ) ;
// joint deux matrices 'm1' et 'm2' à l'aide des colonnes de clé 'c1' et 'c2' (toutes les colonnes sont conservées)
rejoindreMatrices =
Une fonction ({ m1 , c1 , m2 , c2 } , { Local par défaut } ,
dt1 = AsTable ( m1 , << Invisible ) ;
dt2 = AsTable ( m2 , << Invisible ) ;
// Edite l'expression 'Join ()' à votre goût. . .
dt3 = dt1 << Joindre (
Avec ( dt2 ) ,
En faisant correspondre les colonnes ( "Col" || Carboniser ( c1 ) = "Col" || Carboniser ( c2 ) ) ,
Drop multiples ( 0 , 0 ) ,
Inclure les correspondances ( 0 , 0 ) ,
Préserver l'ordre de la table principale ( 1 ) ,
Invisible
) ;
m3 = dt3 << getAsMatrix ;
Fermer ( dt1 , NoSave ) ;
Fermer ( dt2 , NoSave ) ;
Fermer ( dt3 , NoSave ) ;
m3 ;
) ;
// Faire quelques matrices
n = dix ; // Nombre de rangées
m1 = ( 1 :: n ) `|| J ( n , n , dix ) ;
m2 = RandomShuffle ( m1 [ 0 , 1 ]) || Identité ( n ) ;
// Teste la fonction
rejoindreMatrices ( m1 , 1 , m2 , 1 ) ;