Subset-Scripting<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo JMP-Benutzer,
Ich kann Skripte generieren, um große Datendateien zu unterteilen, muss diese dann aber manuell benennen und sie alle einzeln über ein zweites und drittes Teilmengenskript ausführen. Gibt es eine Möglichkeit, den Subset-Befehl iterativ auszuführen und die Dateien so zu speichern, dass sie die Subset-Definitionen enthalten?
Beispiel: Unterteilen Sie die Datei „Farben“ nach Spalte 1 (Rot, Blau, Grün), um die Dateien „Farben.rot.jmp“, „Farben.blau.jmp“, „Farben.grün.jmp“ zu erstellen und zu speichern, und unterteilen Sie diese dann nach Spalte 8 (hell, hell). , dunkel), um Dateien zu erstellen und zu speichern
Colors.red.bright.jmp, Colors.red.light.jmp, Colors.red.dark.jmp, Colors.blue.bright.jmp, Colors.blue.light.jmp, Colors.blue.dark.jmp, Colors. green.bright.jmp, Colors.green.light.jmp, Colors.green.dark.jmp.
Die Spaltenpositionen würden variieren.
Danke !!!
Betreff: Subset-ScriptingDas hat immer noch nicht funktioniert. Ich habe auch mehr Zeit (30), (90) usw. hinzugefügt. Ich konnte dafür sorgen, dass die Dateien speichergeschützt werden, was bedeutet, dass ich sie nicht schließen konnte, ohne anzugeben, ob sie gespeichert werden sollten oder nicht, aber die Benennung war immer noch eine Teilmenge der Teilmenge von myfile 2 3.jmp usw. Ich denke, dass die Liste der Teilmengenvariablen irgendwie nicht stimmt. Ich werde am Wochenende weitere Fehler beheben und kann hier Hilfe von jemandem suchen, der mit unserer JMP-Version vertraut ist.
Vielen Dank für Ihre Hilfe und Ratschläge und ein tolles Wochenende, MS!
Betreff: Subset-ScriptingKönnte ein Leistungsproblem sein. Versuchen Sie, in beide For-Schleifen einen Wait(0)-Befehl einzufügen, um sicherzustellen, dass die Tabellen vollständig sind, bevor JMP versucht, sie zu speichern.
Betreff: Subset-ScriptingDas ist merkwürdig. Der Pfad ist korrekt, da ich ihn zum Öffnen eines dt im selben Verzeichnis verwendet habe. Es erstellt alle Dateien, aber sie haben Namen wie „Subset of Subset of MyFile 2 3.jmp“, „Subset of Subset of MyFile 2 2.jmp“ usw. Diese Dateien sind genau das, was ich will, und das ist erstaunlich Dieses Skript erstellt sie, leider werden sie nicht richtig benannt und gespeichert. Im schlimmsten Fall benenne ich sie manuell, was mir immer noch eine Menge Zeit spart!
Danke für Ihr Bemühen.
Erik
Betreff: Subset-ScriptingIch habe das Skript gerade in JMP 9.0.3 ausprobiert und es funktionierte perfekt, genau wie in JMP 10.
Überprüfen Sie Ihre Pfadvariable. Es muss eine Zeichenfolge sein und mit / beginnen und enden.
Auf meinem Mac funktioniert das zum Beispiel: myPath = "/Users/MS/Desktop/"
Betreff: Subset-ScriptingHallo Frau,
Das war ganz knapp!Es wurden alle Teilmengen erstellt, aber keine der Tabellen gespeichert. Ich habe diese Meldung erhalten: Datei konnte nicht gespeichert werden. Unbekanntes Datenziel.
Ich verwende JMP 9 und frage mich daher, ob es einen Unterschied bei einem Befehl zum Erstellen der Datei gibt oder mache ich etwas falsch? Ich habe den richtigen Pfad in das Skript eingefügt.
Danke,
Erik
Betreff: Subset-ScriptingZumindest in JMP 10 gibt es ein Kontrollkästchen „Subset by“. Wenn diese Option ausgewählt ist, werden Teilmengen für jede Ebene der ausgewählten Spalte(n) automatisch generiert. Es ist einfach, diese Funktion in JSL zu implementieren, wenn die Anzahl der Nebenspalten bekannt ist. Allerdings war es schwieriger, dies zu verallgemeinern, als ich es mir vorgestellt hatte.
Dieser Ansatz, der auf dem Einfügen der sequentiell generierten Teilmengen in Listen (innerhalb von Listen) basiert, scheint jedoch zu funktionieren:
//Beispieltabelle
dt = Neuer Tisch ( "Farbe" ,
Zeilen hinzufügen ( 12 ) ,
Neue Spalte ( "Farbe" ,
Charakter ,
Nominell ,
Werte festlegen ( { "Rot" , "Rot" , "Rot" , "Rot" , "Blau" , "Blau" , "Blau" , "Blau" , "Blau" , "Grün" , "Grün" , "Grün" } )
) ,
Neue Spalte ( "Intensität" ,
Charakter ,
Nominell ,
Werte festlegen (
{ "hell" , "hell" , "dunkel" , "Licht" , "Licht" , "Licht" , "Licht" , "dunkel" , "dunkel" , "dunkel" , "Licht" , "hell" }
)
) ,
Neue Spalte ( "Beenden" ,
Charakter ,
Nominell ,
Werte festlegen (
{ „Matt“ , "Leer" , „Matt“ , "Leer" , „Matt“ , "Leer" , „Matt“ , "Leer" , „Matt“ , "Leer" , „Matt“ , "Leer" }
)
) ,
Neue Spalte ( „Kolensität“ , Charakter , Nominell )
) ;
Für jede Reihe ( : Kolensität = Farbe || Intensität || Beenden ) ; // Nur um zu überprüfen, ob es funktioniert ...
// Beispieltabelle beenden
// Das Skript beginnt hier
Spalten = { Farbe , Intensität , Beenden } ; // Beliebige Anzahl von Teilmengen nach Spalten (in hierarchischer Reihenfolge)
nt = N-Tisch () ; //Anzahl der aktuell offenen Tische
Unterliste = Bewertungsliste ( { dt << Teilmenge ( von ( Spalten [ 1 ] ) )} ) ; //Teilmengen der ersten Ebene
// Teilmengen niedrigerer Ebene rekursiv erstellen
Für ( ich = 2 , ich <= N Artikel ( Spalten ) , ich ++,
Einfügen in ( Unterliste , Bewertungsliste ( { Bewertung ( Unterliste [ ich - 1 ] ) << Teilmenge ( von ( Spalten [ ich ] ) )} ) )
) ;
// alle Teilmengen benennen und speichern
mein Weg = "Weg" ; //Zum gewünschten Pfad wechseln
Für ( ich = 1 , ich <= N-Tisch () - nt , ich ++,
Fernseher = Datentabelle ( ich ) << Tabellenvariablennamen abrufen ; // Die Ebenen werden als Tabellenvariablen gespeichert
Untername = {} ;
Für ( J = 1 , J <= N Artikel ( Fernseher ) , J ++,
Einfügen in ( Untername , Datentabelle ( ich ) << Tabellenvariable abrufen ( Fernseher [ J ] ) )
) ;
Einfügen in ( Untername , dt << Namen bekommen ) ;
Rückwärts in ( Untername ) ;
Datentabelle ( ich ) << speichern ( mein Weg || Concat-Elemente ( Untername , "." ) ) ;
) ;
// Skript beenden //Alle schließen(Datentabellen);
Betreff: Subset-ScriptingDanke PMroz,
Das Problem ist, dass ich die Zwischendateien behalten muss und das Beispiel, das ich gegeben habe, erfunden war und sich die Spaltennamen jedes Mal ändern würden.
Danke,
Erik
Betreff: Subset-ScriptingIch habe eine Anwendung, bei der ich einen großen Datensatz auf verschiedene Arten unterteilen und für jede Teilmenge dieselbe Analyse durchführen muss.Anstatt separate Datensätze zu erstellen, verwende ich eine Kombination aus SELECT und EXCLUDE, um die Daten im großen Datensatz für die Analyse vorzubereiten.Zum Beispiel:
dt = Neuer Tisch ( „Farbbeispiel“ ,
Zeilen hinzufügen ( 12 ) ,
Neue Spalte ( "Farbe" , Charakter , Nominell ,
Werte festlegen (
{ "Rot" , "Rot" , "Rot" , "Rot" , "Blau" , "Blau" , "Blau" , "Blau" , "Blau" ,
"Grün" , "Grün" , "Grün" } ) ) ,
Neue Spalte ( "Intensität" , Charakter , Nominell ,
Werte festlegen (
{ "hell" , "hell" , "dunkel" , "Licht" , "Licht" , "Licht" , "Licht" , "dunkel" ,
"dunkel" , "dunkel" , "Licht" , "hell" } ) ) ) ;
Nr = nrows ( dt ) ;
Farbliste = { "Rot" , "Blau" , "Grün" } ;
Intensitätsliste = { "hell" , "Licht" , "dunkel" } ;
für ( ich = 1 , ich <= nitems ( Farbliste ) , ich ++,
eine Farbe = Farbliste [ ich ] ;
für ( k = 1 , k <= nitems ( Intensitätsliste ) , k ++,
one_intensity = Intensitätsliste [ ich ] ;
// Alle Zeilen ausschließen, die dieser Farbe und Intensität nicht entsprechen
dt << Wählen Sie wo aus ( : Farbe == eine Farbe & : Intensität == one_intensity )
<< Zeilenauswahl umkehren << Ausschließen ;
nausgewählt = Nr. - nrows ( dt << Ausgewählte Zeilen abrufen ) ;
dt << klare Auswahl ;
Wenn ( nausgewählt > 0 ,
// Führen Sie hier Ihre Analyse zu dt durch.Es werden nur die nicht ausgeschlossenen Zeilen verwendet.
// Der einzige Befehl, den ich gefunden habe, der ausgeschlossene Zeilen ignoriert, ist Tables >> Summary
drucken ( "# Reihen: " || verkohlen ( nausgewählt ) || " Farbe: " || eine Farbe ||
„Intensität:“ || one_intensity ) ;
) ;
// Aufräumen für die nächste Auswahl
dt << klare Zeilenzustände ;
) ;
) ;