So fügen Sie Datenwerte zu einer Tabelle in einer for-Schleife hinzu, indem Sie „Spalten auswählen“ verwenden, um eine neue Gesamtdatentabelle mit Zieldaten zu erstellenFor( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" ));<BR />);
Ich möchte nach und nach durch jede Iteration einer for-Schleife Daten hinzufügen, die durch ein Spaltenkriterium (:Timepoint == LBCM) angegeben werden, und sie am Ende, wenn die Schleife abgeschlossen ist, in einer kombinierten Datentabelle kombinieren und das Ergebnis anzeigen .
Bis jetzt fügt es nirgendwo etwas hinzu; Am Ende habe ich überhaupt keine neue Datentabelle.
Ich habe das alles auch in einer anderen for-Schleife, die auf einer Beispiel-ID basiert, aber ich denke, dass das Hinzufügen hier die Sache vorerst nur überkomplizieren würde.
Alle anderen Beispiele, die ich in den JMP-Community-Foren gefunden habe, sind sehr kompliziert, zumindest scheinen sie, Arrays von Daten zu erstellen und diese in Datentabellen oder ähnliches zu übertragen. Ich wünsche mir, dass die Lösung hier so einfach wie möglich ist. Natürlich werde ich zu der Konversation beitragen, sobald die Antworten eingehen, aber im Moment stecke ich einfach fest.
Ich danke Ihnen für Ihre Hilfe,
Mike
Erweiterte statistische ModellierungInhaltsorganisationVersuchsplanungMassenanpassungErgebnisse teilen und kommunizierenABetreff: So fügen Sie Datenwerte zu einer Tabelle in einer for-Schleife hinzu, indem Sie „Spalten auswählen“ verwenden. Wo soll eine neue Gesamtdatentabelle mit Zieldaten erstellt werden?Das Auswählen des Spaltenteils stellt vielleicht einen sehr kleinen Effizienzgewinn dar, aber vor allem macht es den Code einfacher zu lesen (meiner Meinung nach).
Haben Sie versucht, Debugging-Drucke innerhalb von Schleifen hinzuzufügen, um zu sehen, ob es etwas zu unterteilen gibt:
For(i = 1, i <= N Items(IDs), i++,
ID = IDs[i];
date_array = Associative Array({"date1", "date2", "date"}, {{}, {}, {}});
For(date = date_array << First, !Is Empty(date), date = date_array << Next(date),
dt << Select Where(:Timepoint == date);
Show(N Items(dt << Get Selected Rows));
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
);
);Ich fügte hinzu Show(N Items(dt << Ausgewählte Zeilen abrufen)); Hier erfahren Sie, ob Zeilen ausgewählt wurden. Außerdem würde ich mich nicht wohl dabei fühlen, ID als Variablennamen zu verwenden, wenn Sie eine ähnlich benannte Spalte haben (es könnte funktionieren, bin mir nicht sicher, aber ich vermeide solche Namen, nur um sicherzugehen). Ich würde es durch currentID oder so ersetzen.
Ich denke, dass es an dieser Stelle vielleicht einfacher wäre, wenn wir ein Thema hätten, in dem wir versuchen könnten, Ihnen Teil für Teil bei der Lösung dieses Problems zu helfen.Eine Sache, die uns sehr helfen würde, wäre ein Beispieldatensatz. Der Datensatz muss nicht groß sein, es kann sich nicht um anonymisierte oder völlig gefälschte Daten handeln, er sollte aber dennoch realistisch sein (gleiche Spaltendatentypen, Möglichkeit, verschiedene Fälle zu testen).
Betreff: So fügen Sie Datenwerte zu einer Tabelle in einer for-Schleife hinzu, indem Sie „Spalten auswählen“ verwenden. Wo soll eine neue Gesamtdatentabelle mit Zieldaten erstellt werden?Danke dafür, Jarmo. Ist Ihr Code also hauptsächlich ein Effizienzgewinn oder ein echter Funktionsgewinn?
Es funktioniert bei mir nicht ganz, aber ich muss sagen, dass ich das alles in einer anderen for-Schleife (oder zwei) habe:
For( i = 1, i <= N Items( IDs ), i++,
ID = IDs[i];
date_array = Associative Array( {"date1", "date2", "date"}, {{}, {}, {}} );
For( date = date_array << First, !Is Empty( date ), date = date_array << Next( date ), //looping through date_array's keys is clunky but done this way in JMP
dt << Select Where(:Timepoint == date);
dt_ld4 << Subset(Columns({"Timepoint", "Target Channel"}), Selected Rows, Output table name("Subset"));
//...
););Der Computer scheint bei der Ausführung ziemlich viel nachzudenken, aber auf dem Bildschirm wird nichts angezeigt. Ich muss beachten, dass der gesamte Code anonymisiert ist, sodass die Möglichkeit von Rechtschreib- und Transkriptionsfehlern sowie die Möglichkeit einer Verwechslung mit früheren Versionen des Geschriebenen besteht. Ich denke, man kann davon ausgehen, dass es ungefähre Ähnlichkeiten gibt ...
Ich weiß nicht, ob diese beiden Zeilen innerhalb der Schleifen oder außerhalb einer davon liegen sollten, oder ob ich zu diesem Zeitpunkt beide Schleifen benötige. Ich muss mir das Drehbuch noch einmal genau ansehen.
Ich diskutiere auch einige separate Themen zu diesem Code in separaten Beiträgen. Könnte mir ein Vorgesetzter mitteilen, ob das eine akzeptable Etikette ist, oder ob es besser wäre, den Codeteil in einem Beitrag zu priorisieren und die einzelnen Themen in dem einzelnen Beitrag zu besprechen, oder ob beides in Ordnung ist?
Muchos Gracias,
Michael
Betreff: So fügen Sie Datenwerte zu einer Tabelle in einer for-Schleife hinzu, indem Sie „Spalten auswählen“ verwenden. Wo soll eine neue Gesamtdatentabelle mit Zieldaten erstellt werden?Ich bin mir nicht 100 % sicher, was Sie hier tun möchten, also rate ich ein wenig
In diesen beiden Zeilen scheint es einige Probleme zu geben:
dt << Select Columns( :Timepoint, :Target Channel, :Run date ), Where(:Timepoint == date);
dt << Subset( ( Selected Rows ), Output Table Name( "Subset" )););
Sie können die gewünschten Spalten innerhalb des Subset-Befehls kombinieren und die Auswahl von Zeilen kann mit << Select Where erfolgen (anscheinend fehlt Ihnen Select).
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));Wenn Sie außerdem lieber zuerst die Spalten auswählen möchten, die Sie in eine Teilmenge aufteilen möchten, müssen Sie im Befehl „Teilmenge“ den Befehl „Ausgewählte Spalten“ hinzufügen
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Betreff: So fügen Sie Datenwerte zu einer Tabelle in einer for-Schleife hinzu, indem Sie „Spalten auswählen“ verwenden. Wo soll eine neue Gesamtdatentabelle mit Zieldaten erstellt werden?Schauen Sie mal rein
dt << add rows(n);
um nach Bedarf neue Zeilen hinzuzufügen