Verbinden von Matrizen durch passende Spalten<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hat jemand ein schlankes Skript zum Verbinden von Matrizen in der Art und Weise, wie Tabellen verbunden werden (durch übereinstimmende Spalten)?
Ich danke Ihnen allen im Voraus
Ron
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenVielen Dank!
also denke ich, ich bin zurück zu meinen alten tabellenbefehlen, nachdem alle ....
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenJa, alle diese Funktionen sollten Multithreading sein.
Multithreading wird in JSL weitgehend nicht unterstützt (dies ist zum größten Teil eine gute Sache). Wenn dies jedoch für JMP selbst zutrifft, wäre das Programm extrem langsam und für einen Endbenutzer unbrauchbar. Die meisten Sendebefehle "<<" sind in der Regel multithreaded, da sie in JMP enthalten sind, jedoch nicht alle.
Testen Sie einfach eine Funktion, wenn Sie eine Frage dazu haben. Öffnen Sie beispielsweise Ihren Task-Manager und führen Sie einen der folgenden Befehle aus:
dt = neue Tabelle ( "Prüfung" ) ;
dt << Neue Spalte ( "Prüfung" . Numerisch . Kontinuierlich . Werte ( 1 :: 100000000 )) ;
dt << Zeilen löschen ( 1 :: 100000000 ) ;
dicht ( dt . nosave ) ;
Wenn ich das ausführen, können Sie alle vier meiner Prozessoren sehen.

Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenVielen Dank Msharp , das ist nützlich zu wissen.
was ist mit tabellenzusammenfassung? Mehrere Zeilen löschen? Mehrere Spalten löschen?
Ron
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenNach meinem Wissen sind Joins und einige andere Tabellenoperationen die einzigen Multithreadoperationen in JMP. Ich würde mein ganzes Geld dafür einsetzen, dass ein Tabellen-Join schneller ist als ein Matrix-Join.
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenTut mir leid, Ron. Meine Antwort war nicht zu implizieren, dass man mit Matrixmanipulationen keine spezifischen Fälle des 'Join' schneller machen könnte - wahrscheinlich könnte man das. Es ist nur so (wie die Optionen in "Tabellen> Verbinden" zeigen), dass das Beitreten nicht "eine Sache" ist, und ich wusste nicht die Details Ihrer Fälle.
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenVielen Dank Ian @ JMP für das Skript und den Tipp.
Ich stimme zu, dass die Leistungsfähigkeit von JMP hervorragend ist und viel einfacher zu handhaben ist, als grobe Befehle mithilfe von Matrizen zu erstellen. In meinem Fall spart es auch eine Menge Zeit, da ich schnell überprüfen kann, ob es das tut, was ich wollte, indem ich die interaktive Schnittstelle bei jedem Schritt benutze.
Die Sache ist das Skript, das ich geschrieben habe, in dem der gesamte Prozess Datentabellen verwendet - Zusammenfassen, Verbinden, Vergleichen, Löschen von Zeilen und Extrahieren von Werten. Ich hatte gehofft, es durch die Umwandlung in Matrizen schneller zu machen, aber ich stelle fest, dass dies nicht der Fall sein wird.
Ron
Re: Zusammenfügen von Matrizen durch übereinstimmende SpaltenIch schlage nur ein wenig in die Wange und schlage folgendes vor. Es mag pervers erscheinen, aber es ist immer gut, JMP für Sie zu gewinnen. In diesem Fall würde es einige Anstrengungen erfordern, die Flexibilität von 'Join ()' in der Welt der Matrizen neu zu erfinden.
NamesDefaultToHere ( 1 ) ;
// Verbindet zwei Matrizen 'm1' und 'm2' mit den Schlüsselspalten 'c1' und 'c2' (alle Spalten bleiben erhalten)
joinMatrizen =
Funktion ({ m1 . c1 . m2 . c2 } . { Default Local } .
dt1 = AsTable ( m1 . << Unsichtbar ) ;
dt2 = AsTable ( m2 . << Unsichtbar ) ;
// Bearbeiten Sie den 'Join ()' - Ausdruck nach Belieben. . .
dt3 = dt1 << Beitreten (
Mit ( dt2 ) .
Durch das Übereinstimmen von Spalten ( "Col" || Verkohlen ( c1 ) = "Col" || Verkohlen ( c2 ) ) .
Mehrfache fallen lassen ( 0 . 0 ) .
Nichtübereinstimmungen einschließen ( 0 . 0 ) .
Haupttabellenreihenfolge beibehalten ( 1 ) .
Unsichtbar
) ;
m3 = dt3 << getAsMatrix ;
Schließen ( dt1 . NoSave ) ;
Schließen ( dt2 . NoSave ) ;
Schließen ( dt3 . NoSave ) ;
m3 ;
) ;
// Mach ein paar Matrizen
n = 10 ; // Reihenanzahl
m1 = ( 1 :: n ) `|| J ( n . n . 10 ) ;
m2 = RandomShuffle ( m1 [ 0 . 1 ]) || Identität ( n ) ;
// Testen Sie die Funktion
joinMatrizen ( m1 . 1 . m2 . 1 ) ;