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 sind, und sie am Ende, wenn die Schleife fertig ist, zu einer kombinierten Datentabelle kombinieren und das Ergebnis anzeigen .
Ab sofort fügt es nirgendwo etwas hinzu; Am Ende habe ich überhaupt keine neue Datentabelle.
Ich habe all dies auch in einer anderen for-Schleife, basierend auf einer Beispiel-ID, aber ich denke, das Hinzufügen hier würde die Dinge vorerst nur zu kompliziert machen.
Alle anderen Beispiele, die ich in den JMP-Community-Foren gefunden habe, sind sehr kompliziert, oder so scheinen sie, Datenarrays zu erstellen und sie in Datentabellen oder ähnliches zu übertragen. Ich wünsche mir hier eine möglichst einfache Lösung. Natürlich werde ich zu dem Gespräch beitragen, wenn Antworten eintreffen, aber im Moment stecke ich einfach fest.
Danke für Ihre Hilfe,
Mike
AnalytikDatentabelleSonstigesSkripterstellungEINRe: 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 erstellenDas Auswählen des Spaltenteils ist vielleicht ein sehr kleiner Effizienzgewinn, aber meistens macht es den Code nur leichter lesbar (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 << Get Selected Rows)); was Ihnen sagen sollte, ob Zeilen ausgewählt wurden. Ich würde mich auch nicht wohl dabei fühlen, ID als Variablennamen zu verwenden, wenn Sie eine ähnlich benannte Spalte haben (es könnte funktionieren, nicht sicher, aber ich vermeide solche Namen, nur um sicherzugehen). Ich würde es durch currentID oder so etwas 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 bei der Lösung dieses Problems Teil für Teil zu helfen.Eine Sache, die uns sehr helfen würde, wäre ein Beispieldatensatz. Der Datensatz muss nicht groß sein, kann anonymisierte oder vollständig gefälschte Daten enthalten, sollte aber dennoch realistisch sein (Spaltendatentypen gleich, Möglichkeit, verschiedene Fälle zu testen).
Re: 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 erstellenDanke dafür, Jarmo. Ist Ihr Code also hauptsächlich ein Effizienzgewinn oder ein echter Funktionsgewinn?
Es funktioniert nicht direkt für mich, 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 anmerken, dass dieser gesamte Code anonymisiert ist, sodass Rechtschreib- und Übertragungsfehler sowie Verwechslungen mit früheren Versionen des Geschriebenen möglich sind. Ich denke, es ist sicher anzunehmen, dass ungefähre Ähnlichkeiten hergestellt werden können ...
Ich weiß nicht, ob diese beiden Linien innerhalb der Schleifen oder außerhalb einer von ihnen sein sollten oder ob ich zu diesem Zeitpunkt beide Schleifen benötige. Ich muss mir das Drehbuch noch einmal genau ansehen.
Ich diskutiere auch ein paar separate Themen zu diesem Code-Bit in separaten Beiträgen. Könnte mir ein Senior mitteilen, ob dies eine akzeptable Etikette ist oder ob es vorzuziehen wäre, den Code-Chunk in einem Post zu priorisieren und die einzelnen Themen in einem einzigen Post zu diskutieren, oder ob beides in Ordnung ist?
Muchos Gracias,
Michael
Re: 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 erstellenIch bin mir nicht 100% sicher, was Sie hier tun wollen, also vermute ich ein wenig
Diese beiden Zeilen scheinen einige Probleme zu haben:
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 (scheint, als ob Ihnen Select fehlt).
dt << Select Where(:Timepoint == date);
dt << Subset(Columns({"Timepoint", "TargetChannel"}), Selected Rows, Output table name("Subset"));Wenn Sie es vorziehen, zuerst die Spalten auszuwählen, die Sie unterteilen möchten, müssen Sie den Befehl „Ausgewählte Spalten“ innerhalb des Befehls „Untermenge“ hinzufügen
dt << Subset(Output table name("Subset"), Selected Rows, Selected Columns);Re: 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 erstellenSchauen Sie sich an
dt << add rows(n);
um bei Bedarf neue Zeilen hinzuzufügen