In dieser Demonstration sehen wir uns also an, wie Sie bestimmte Zeilen auswählen und den Befehl subset verwenden, der interaktiv im Menü Tabellen zu finden ist, um eine Teilmenge der Datentabelle herauszuziehen. Also klicke ich im Kursjournal im Abschnitt auf Skihütten-Temperaturdaten. Und dies ist eine breite Datentabelle, aber ziemlich kurz. Unser Szenario hier ist also, dass wir ein Skigebiet haben, das eine Wetterstation hat, die jede Stunde die Temperatur aufzeichnet und in einer Datei speichert. Und so wird jede Beobachtung in der Datei das Datum plus die stündlichen Temperaturmesswerte enthalten. Es zeigt morgens an, also ist die Temperatur morgens. Nehmen wir nun an, dass wir planen, die Schneeerzeugungsmaschinen einzuschalten, wenn die Temperatur unter minus Grad Celsius fällt, da es bei dieser Temperatur möglicherweise zu kalt zum Beschneien ist. Und deshalb wollen wir uns unsere Aufzeichnung historischer Daten ansehen, um Tage in der Aufzeichnung zu finden, an denen wir diese Schneemaschine benutzt hätten. Vielleicht versuchen wir, das Hinzufügen einer weiteren Maschine oder das Ersetzen der vorhandenen zu rechtfertigen. Und so ein paar Dinge hier. Eine davon ist, dass diese Temperatur auf einer Fahrenheit-Skala aufgezeichnet wurde, nicht auf Celsius. Und zweitens verwenden wir nur eine kleine Teilmenge der Daten. Jetzt sind diese in Tagesordnung, aber dies stellt eine unserer Best Practices dar, wenn Sie an einem großen Datensatz arbeiten, versuchen Sie, eine repräsentative Stichprobe von Beobachtungen für die Entwicklung Ihres Skripts zu erhalten, damit Sie es entwickeln und testen können Ihr Skript gegen eine kleinere Teilmenge. Wiederum hoffentlich alle Probleme darstellen, die Sie in den Daten erwarten könnten. Und dann können Sie es mit dem vollständigen Datensatz testen. In diesem Beispiel ist das hoffentlich repräsentativ, dass wir nur eine einzige Woche Daten genommen haben. Die andere Sache ist, dass wir Temperaturen in Fahrenheit aufgezeichnet haben, aber unser Cutoff liegt bei minus Grad Celsius. Während wir Minusgrad Celsius sicherlich in Fahrenheit umwandeln können, werden wir stattdessen dieses Konzept der Arbeit mit den vektorisierten Operationen wiederholen und alle Fahrenheit-Temperaturen als Matrix extrahieren und sie in Celsius-Temperaturen umwandeln. Im Tagebuch gibt es also ein vorgefertigtes Skript mit dem Namen „Isolate Snow-Making Days Script“. Und ich werde das Stück für Stück ausführen. Und in dieser Demonstration werde ich tatsächlich die eingebettete Protokolloption verwenden, anstatt zum Protokollfenster hin und her zu navigieren. Ich klicke also mit der rechten Maustaste in mein Skript-Editor-Fenster und wähle „Eingebettetes Protokoll anzeigen“. Und ich werde die Größe einfach so ändern, dass wir immer noch das gesamte Skript im Editor-Teil des Fensters sehen können. Also wähle ich die Zeile aus und führe sie aus. Und damit wird die Referenz für die aktuelle Datentabelle, die Datentabelle Ski Lodge Temperature, abgerufen und in dt gespeichert. Dann sende ich die Nachricht get als Matrix und speichere das in der Variablen tempF. Also werde ich Zeile und oft mit einer größeren Matrix ausführen, anstatt die Matrix im Protokoll anzuzeigen, erhalten wir nur die Matrixabmessungen und die Angabe, dass diese zugewiesen wurde. Beachten Sie nun, dass es sieben Zeilen und Spalten sind. Und wenn ich zurück zur Datentabelle navigiere, gibt es Spalten in dieser Datentabelle. Warum haben wir also nur Säulen herausgezogen? Nun, wenn Sie sich die Datumsspalte ansehen, können Sie sehen, dass es nominal ist. Das deutet darauf hin, dass dies möglicherweise eher als Zeichendaten als als numerisch behandelt wird. Und ich kann das weiter bestätigen, ich könnte natürlich zu den Spalteninformationen gehen, aber ich kann das zusätzlich bestätigen, indem ich die Spalte nur ein wenig breiter mache und feststelle, dass die Werte linksbündig ausgerichtet sind, so wie JMP mit Zeichendaten umgeht. Als ich also get als Matrix an die Datentabelle schickte, ignorierte sie diese Zeichenspalte und extrahierte nur die numerischen Spalten. Line nimmt dann jedes Element in der Variablen tempF, dieser Matrix, die dort gespeichert ist, konvertiert es in Celsius und speichert es in tempC. Und wieder bekomme ich dieselbe Meldung im Protokoll, aber Sie können natürlich über tempf oder tempc schweben, um ihre Werte zu sehen. Als nächstes möchte ich die Zeilen in tempC zählen, und ich habe dies als bewährte Methode erwähnt, Zeilen oder Spalten außerhalb einer Schleife zu zählen. Also zähle ich die Zeilen in der Matrix tempC und speichere das in der Variablen nr. Also werde ich Linie laufen lassen und natürlich gibt es sieben. Das andere, was ich tun möchte, ist, ich möchte haben... Ich werde zwei Matrizen erstellen. Einer, der die minimale Temperatur an einem bestimmten Tag angibt, das ist minTemp, und der andere, der anzeigt, ob die Schneemaschine hätte eingeschaltet werden sollen oder nicht, und das heißt Maschine. Und beide beginnen mit einer gewissen Anzahl von Zeilen, einer Spalte und fehlenden Werten. Und so kaskadieren wir die Assign-Funktion. Ich verwende diese J-Funktion, um eine Matrix mit einer bestimmten Anzahl von Zeilen zu erstellen. Hier sind die Anzahl der Zeilen von tempC, diese einzelne Spalte, wie ich erwähnt habe, und der fehlende Wert. Und wenn Machine, minTemp und alle anderen Variablen mit demselben Wert beginnen, können wir sie einfach auf diese kaskadierende Weise zuweisen, wie Sie in line So I'll run that und im Protokoll und wenn Sie mit der Maus darüber fahren Machine oder minTemp sehen Sie nur diese Spalte mit fehlenden Werten. Dann möchte ich eine Schleife ausführen, und ich beginne mit einem Zähler. Ich teste r kleiner oder gleich den in nr gespeicherten Zahlen, und dann ist der Körper der for-Schleife, dass ich eine Variable namens obs haben werde, die dies aufnehmen wird Fall die erste Zeile und alle Spalten in tempC. Ich werde den Mindestwert in dieser Zeile finden und ihn an die r-te oder erste Stelle in minTemp setzen. Dann vergleiche ich den Wert, den ich gerade in minTemp an dieser Position gesetzt habe, mit minus und wenn dieser Vergleich wahr ist, wenn der Wert kleiner als minus ist, bekomme ich eine boolesche Eins als Ergebnis und setze das an die erste Position in Machine, wohingegen, wenn es falsch ist, wenn es größer oder gleich minus ist, ich Maschine einsetze. Dann aktualisieren wir, wir testen erneut, und jetzt wird obs mit der nächsten Zeile in der Datentabelle überschrieben. Und wir werden die gleichen Schritte ausführen, bis wir sowohl minTemp als auch Machine bevölkern. Also lasse ich die Zeilen durchlaufen und wir können den Mauszeiger über minTemp bewegen. Und wieder wird es in der Hover-Hilfe angezeigt, es wird auch unten im Skript-Eingabefenster angezeigt, das Sie unten sehen können. Und ich kann den Mauszeiger über Maschine bewegen und da sind diese und jetzt die letzten paar Schritte, wir hätten diese Nachrichten kaskadieren können, aber zu Demonstrationszwecken werden wir sie trennen. Also werde ich eine neue Spaltennachricht an dt senden. Es wird minTemp heißen, und die Werte werden nur diejenigen sein, die ich gerade aus dieser for-Schleife erhalten habe. Also werde ich Zeilen durchlaufen lassen. Und Sie können im Hintergrund sehen, dass diese neue Spalte erstellt wurde. Ich hätte der neuen Spalte beispielsweise ein Formatargument hinzufügen können, um eine feste Anzahl von Dezimalstellen zu haben. Dadurch wurde auch eine Spaltenobjektreferenz zurückgegeben, die ich in einer Variablen hätte speichern können, wenn ich vorhatte, erneut mit dieser Spalte zu arbeiten. Dann setzt der nächste Codeabschnitt neue Spalten und eine Nachricht an dt. Dieser heißt Make Snow. Und die Werte kommen von diesem Maschinenspaltenvektor, der und Und hier wird mein Skript anfordern, dass wir Wertelabels verwenden, wobei, wenn es ein für den Datenwert gibt, das Label nein ist, und wenn es ein für den Datenwert gibt, das Label wird ja sein. Und dann verwenden wir natürlich den booleschen Wert, um die Option zur Verwendung von Wertelabels zu aktivieren. Also werde ich die Zeilen durchgehen lassen. Wieder erstellen wir eine Instanz eines Spaltenobjekts. Und ich möchte zurück zur Tabelle navigieren und darüber scrollen. In der Spalte jetzt zeigen wir also Nein und Ja an. Wenn ich jedoch nach unten scrolle, können Sie im Spaltenbereich immer noch sehen, dass Make Snow kontinuierlich ist, was bedeutet, dass es sich um numerische Daten für die tatsächlichen Datenwerte handelt. Und noch etwas mit Wertelabels, wenn ich sie verwende – und das Sternchen im Spaltenbereich zeigt auch an, dass es eine Eigenschaft gibt, und wenn Sie darauf klicken, sehen Sie diese hier – wenn ich Wertelabels verwende , wenn ich mit der Maus über eine Zelle in der Datentabelle fahre, wird mir der tatsächliche Datenwert angezeigt. Aber wenn ich jetzt ein Diagramm oder irgendeine Art von Analyse erstellen würde, würde es diese Labels verwenden, solange sie eingeschaltet sind. Und dann zurück im Skript könnten wir diese Nachrichten wieder in die Datentabelle kaskadieren, aber zu Demonstrationszwecken werden wir sie in diesen Schritten ausführen. Ich sende select where an die Datentabelle und suche nach den Zeilen, in denen der Wert in der Spalte Make Snow gleich ist. Also führe ich line aus. Und Sie können im Hintergrund sehen, dass vier Zeilen ausgewählt wurden. Und schließlich sende ich den subsect-Befehl an die Datentabelle. Ich gebe einen Ausgabetabellennamen an und gebe die Spalten an. Und da ich vier Zeilen ausgewählt habe, muss ich nicht sagen, welche Zeilen ich möchte. Diese werden automatisch in die Subset-Tabelle gezogen. Also werde ich die Zeilen durchgehen lassen. Und jetzt haben wir diese Teilmengentabelle. Auch an dieser Stelle könnten wir uns dafür entscheiden, die minimalen Temperaturdaten zu formatieren. Das Quellskript spiegelt die Teilmenge wider. Und lassen Sie uns einen kurzen Blick darauf werfen, wenn ich mit der rechten Maustaste auf Quelle klicke und Bearbeiten wähle. Jedes Mal, wenn ich ein neues Skript mit einem Befehl aus dem Tabellenmenü erstelle, egal ob ich es interaktiv oder mit einem Skript mache, erhalte ich das Quellskript. Und so zeigt es nur, dass die Teilmenge der verwendete Tabellenbefehl war. Die Vorsicht bei subset ist, dass es nicht weiß, warum diese Zeilen herausgezogen wurden, also werden diese Zeilen fest codiert. Es gibt keine Grundlage für diese Auswahl in dem Skript, das JMP schreibt. Und JMP überschreibt auch diese Standardtendenz, nur die ausgewählten Zeilen abzurufen, indem ein als Argument für ausgewählte Zeilen verwendet wird. Wenn Sie also das Skript erfassen und an ein anderes von Ihnen geschriebenes Skript anpassen möchten, sollten Sie die beiden von mir gezeigten Zeilen entfernen und vor dem Senden der Teilmengennachricht die logischen Auswahlen Ihres Skripts treffen, die erforderlich sind . Also werde ich dieses Skript abbrechen. Dies war also ein Beispiel für die Verwendung eines Befehls aus dem Menü der Tabelle, aber auch für die Arbeit mit den Daten als Matrizen.