<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola,
Tengo cinco columnas numéricas. Es necesario crear una nueva columna que refleje los valores máximos en cada fila de las cinco columnas. En lugar de devolver el valor, necesito colocar el nombre de columna correspondiente en cada fila.
Gracias
Sam
Hola Sam,
en el nivel más básico, prueba esto:
dt = Nueva mesa ( "tabla de datos" ,
Nueva Columna ( "X1" , Fórmula ( Uniforme al azar () ) ) ,
Nueva Columna ( "X2" , Fórmula ( Uniforme al azar () ) ) ,
Nueva Columna ( "X3" , Fórmula ( Uniforme al azar () ) ) ,
Nueva Columna ( "X4" , Fórmula ( Uniforme al azar () ) ) ,
Nueva Columna ( "X5" , Fórmula ( Uniforme al azar () ) ) ,
agregar filas ( 100 )
) ;
dt << Nueva Columna ( "Nombre máximo de columna" ,
Personaje ,
fórmula (
Si (
: X1 == Máximo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X1" ,
: X2 == Máximo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X2" ,
: X3 == Máximo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X3" ,
: X4 == Máximo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X4" ,
: X5 == Máximo ( : X1 , : X2 , : X3 , : X4 , : X5 ) , "X5" ,
)
)
) ;
A partir de esto puedes generalizarlo aún más.
tenga en cuenta que si hay valores iguales que son el máximo en una fila, esta fórmula preferirá la columna por su ubicación en la instrucción if (para bien y para mal).
Se puede hacer con una fórmula de columna, pero es más fácil con una pequeña secuencia de comandos JSL. El bucle en la última línea identifica la columna con el valor más alto y coloca su nombre en la nueva columna "max". Si varias columnas tienen el mismo valor máximo, se elegirá la primera instancia.
dt = Tabla de datos actual () ;
cols = dt << obtener nombres de columna ( numérico ) ;
Newcol = dt << Nueva Columna ( "max" , personaje ) ;
Por cada fila ( Newcol [] = cols El Loc Max ( Matriz ( cols ))] << obtener nombre ) ;