Schleifenproblem, wenn Spalte als VariableIch habe eine Tabelle mit dem Aufruf dt und sie hat viele Spalten. Ich möchte fehlende Einträge in bestimmten Spalten finden und mit „N“ auffüllen. Unten ist mein Skript, aber die Variable col[i] funktioniert nicht.Ich habe versucht, as Column(dt, col[i]) durch Column(dt, col[i]) zu ersetzen, aber es hat nicht funktioniert. Wenn ich jedoch die as-Spalte (dt, col[i]) durch den wahren Spaltennamen (Beispiel: :A) ersetze, funktioniert das Skript. Irgendwelche Vorschläge, wo ist mein Fehler?
col={"A", "B", "C", "D", "E"};
For( i = 1, i<= N Items( col ), i++,
empty_rows = dt << get rows where (is missing(as column(dt, col[i])));
if (nrows(empty_rows) > 0,
as column(dt, col[i])[empty_rows] = "N";
);
);Datenmischung und -bereinigungBetreff: Schleifenproblem, wenn Spalte als VariableVerwenden
clear globals();
clear symbols();
zu löschen
Betreff: Schleifenproblem, wenn Spalte als VariableOhne den gesamten Code zu sehen, könnte das Problem an der dt-Variablen liegen. Im Allgemeinen ist es eine gute Idee, JSL-Skripte mit zu starten Namen standardmäßig hier(1);. Dadurch können nicht aufgelöste Namen im Here-Namespace gespeichert werden.
Sie können Variablen mit „Delete Symbols()“, „Delete Globals()“ löschen und manchmal müssen Sie möglicherweise auch einige Namespaces löschen.
Hier ist auch eine andere Option zum Ändern leerer Werte mithilfe von Loc und der Datentabellensubskription:
Names Default To Here(1);
dt = Current Data Table();
col = {"A", "B"};
For(i = 1, i <= N Items(col), i++,
empty_rows = Loc(dt[0, col[i]], "");
If(N Rows(empty_rows) > 0,
dt[empty_rows, col[i]] = "N";
);
);Betreff: Schleifenproblem, wenn Spalte als VariableHallo Jim,
Danke, Jim, für deine Hilfe.
Ich habe es viele Male versucht und es funktioniert immer noch nicht. nach Ihrer Validierung des Codes. Ich habe beschlossen, JMP zu schließen und erneut zu öffnen. Dieses Mal funktioniert es. Ich frage mich, ob es am Cache-Problem liegt? Gibt es eine Möglichkeit, den JMP-Cache zu bereinigen, ohne JMP neu zu starten? Meine Annahme könnte falsch sein, aber jeder kann einen Vorschlag machen, der hilfreich sein wird.
Betreff: Schleifenproblem, wenn Spalte als VariableIhr Code funktioniert gut.Gegeben sei eine Datentabelle

und eine Kopie Ihres Codes ausführen
names default to here(1);
dt=current data table();
col={"A", "B"};
For( i = 1, i<= N Items( col ), i++,
empty_rows = dt << get rows where (is missing(as column(dt, col[i])));
if (nrows(empty_rows) > 0,
as column(dt, col[i])[empty_rows] = "N";
);
);
Es ergibt sich folgendes

Das Problem besteht möglicherweise darin, dass Sie keinen Zeichenwert in die Zelle einfügen können, wenn Ihre A-, B-, C-, D- und E-Spalten numerisch sind.JMP konvertiert ihn in einen fehlenden Wert „.“