Erstellen von Formeln mit vorhandenen SpaltennamenNames Default To Here( 1 );
dt = Current Data Table();
numcol=dt << Get Column Names(Numeric);
charcol=dt << Get Column Names( Character);
For( k = 1, k <= N Items( numcol ), k++,
colname=column(numcol[k]) <<GET name=""></GET>
Hallo JMP-Benutzer,
Ich habe eine Datentabelle, in der ich einige Konvertierungen für numerische Spalten basierend auf vordefinierten Kriterien durchführen muss.
Ich erhalte den Fehler „Der Ausdruck passt nicht zu den verfügbaren Spaltentypen in Zeile 1 beim Zugriff oder bei der Auswertung von ‚Bad Argument‘“.
Irgendeine Idee, wie man das löst? Hochgeschätzt!
SkripterstellungBetreff: Formel mit vorhandenen Spaltennamen erstellenSie haben hier 2 Probleme.
- Wenn eine Formel einer neuen Spalte präsentiert wird, wird sie nicht verarbeitet, bevor sie als Formel hinzugefügt wird.Daher, wenn Sie angeben
:Column(dt, colname)
JMP ändert ihn nicht in den ersten numerischen Spaltennamen, dann den zweiten usw.Der JSL-Autor muss Code verwenden, der die Referenz in die vollständige/abgeschlossene JSL-Anweisung erweitert, bevor er sie an das Format-Element übergibt
- Die Spaltennamen in Ihrer Datentabelle, dh 1, 2, 3, 4 usw., verursachen Probleme bei der Interpretation durch JMP, es sei denn, Sie geben ausdrücklich an, dass sie als Spaltennamen interpretiert werden sollen.Daher müssen Sie die Struktur :"column name"n verwenden
Unten sehen Sie eine Überarbeitung Ihres Codes, die die gewünschten neuen Spalten erzeugt
Names Default To Here( 1 );
dt = Current Data Table();
numcol = dt << Get Column Names( Numeric );
charcol = dt << Get Column Names( Character );
For( k = 1, k <= N Items( numcol ), k++,
colname = Column( numcol[k] ) << Get Name;
Eval(
Substitute(
Expr(
dt << New Column( "site" || numcol[k],
formula(
If(
:ID == "item5", (__colname__ * 0.5) / 20,
:ID == "item8", (__colname__ * 0.8) / 20,
__colname__
)
)
)
),
Expr( __colname__ ), Parse( ":\!"" || colname || "\!"n")
)
);
);Betreff: Formel mit vorhandenen Spaltennamen erstellenDanke Jim, es funktioniert!