<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Ich habe fünf numerische Spalten. Sie müssen eine neue Spalte erstellen, die die Maximalwerte in jeder Zeile der fünf Spalten widerspiegelt. Anstatt den Wert zurückzugeben, muss ich den entsprechenden Spaltennamen in jede Zeile einfügen.
Vielen Dank
Sam
Hallo Sam,
Auf der einfachsten Ebene versuchen Sie Folgendes:
dt = Neue Tabelle ( "Datentabelle" .
Neue Spalte ( "X1" . Formel ( Zufällige Uniform () ) ) .
Neue Spalte ( "X2" . Formel ( Zufällige Uniform () ) ) .
Neue Spalte ( "X3" . Formel ( Zufällige Uniform () ) ) .
Neue Spalte ( "X4" . Formel ( Zufällige Uniform () ) ) .
Neue Spalte ( "X5" . Formel ( Zufällige Uniform () ) ) .
Zeilen hinzufügen ( 100 )
) ;
dt << Neue Spalte ( "Maximaler Col-Name" .
Charakter .
Formel (
Ob (
: X1 == Maximal ( : X1 . : X2 . : X3 . : X4 . : X5 ) . "X1" .
: X2 == Maximal ( : X1 . : X2 . : X3 . : X4 . : X5 ) . "X2" .
: X3 == Maximal ( : X1 . : X2 . : X3 . : X4 . : X5 ) . "X3" .
: X4 == Maximal ( : X1 . : X2 . : X3 . : X4 . : X5 ) . "X4" .
: X5 == Maximal ( : X1 . : X2 . : X3 . : X4 . : X5 ) . "X5" .
)
)
) ;
Von hier aus können Sie es weiter verallgemeinern.
Bitte beachten Sie, dass diese Formel die Spalte nach ihrer Position in der if-Anweisung (für gut und schlecht) vorziehen wird, wenn gleiche Werte den Höchstwert in einer Zeile haben.
Dies kann mit einer Spaltenformel erfolgen, mit einem kleinen JSL-Skript ist es jedoch einfacher. Die Schleife in der letzten Zeile identifiziert die Spalte mit dem höchsten Wert und gibt ihren Namen in die neue Spalte "Max" ein. Wenn mehrere Spalten den gleichen Maximalwert haben, wird die erste Instanz ausgewählt.
dt = Aktuelle Datentabelle () ;
Cols = dt << getcolumn-Namen ( numerisch ) ;
newcol = dt << Neue Spalte ( "max" . Charakter ) ;
Für jede Reihe ( newcol [] = Cols [ Loc Max ( Matrix ( Cols ))] << Name bekommen ) ;