¿Cómo seleccionar los tres valores de celda más altos en cada columna?Para cada columna que contenga una palabra, diga "Predicción", quiero extraer los 3 valores de celda principales, ya sea mayores que 5 o mayores que 4.5 (si obtengo 3 números por encima de 5, entonces no quiero ningún número por encima de 4.5) en una lista. Además, elija el que esté más alejado de 5 y oculte el valor de celda correspondiente en su tabla sin procesar. Por ejemplo, en esta tabla de ejemplo que se muestra a continuación:
En la columna Predicción B, quiero almacenar 6.6, 5.3 y 5. Y oculte la celda adyacente a la tuerca de Predicción B en la Columna B, es decir, el valor de celda 65.
Mi código selecciona columnas que tienen la cadena "Predicción".
dt = Current Data Table();
a = "Prediction";
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
If( Contains( col[i], a ), )
);
¿Cómo puedo elegir las 3 celdas superiores mayores de 5 o 4,5? Muchas gracias comunidad JMP por ser tan puntuales.
Re: Los 3 primeros valores de celda en cada columna@txnelson Podría hacerlo usando regex: match = regex(colstrings, "[{,]\s*([^{,}]*Prediction[^{,}]*)[,}]", "\1");
Re: Los 3 primeros valores de celda en cada columnaUtilice la función Loc() en lugar de la función Contiene() para especificar cadenas específicas.
Re: Los 3 primeros valores de celda en cada columnaAdemás, ¿hay alguna forma de hacer coincidir columnas como B y Predicción B? Gracias
Re: Los 3 primeros valores de celda en cada columnaBien, gracias por ayudar.@txnelson @uday_guntupalli
Re: Los 3 primeros valores de celda en cada columnaNo hay una forma directa de retirar el valor de una celda una vez que se ha configurado como Falta.Esa es la razón por la que @dale_lehman sugirió usar nuevas columnas y @uday_guntupalli sugiere crear un nuevo subconjunto de los datos y luego modificar el subconjunto.
Re: Los 3 primeros valores de celda en cada columna@amy ,
Siempre puede crear subconjuntos de tablas, en lugar de tratar de incluir celdas individuales.
Re: Los 3 primeros valores de celda en cada columna@amy ,
dt = Current Data Table();
SearchTerm = "Prediction";
ColNames = dt << Get Column Names("String");
DesRowsList = {};
for(i = 1, i <= N Cols(dt), i++,
If(Contains(ColNames[i],SearchTerm),
SR = dt << Select Where(As Column(dt,ColNames[i]) > 4.5) << Get Selected Rows;
Insert Into(DesRowsList,SR);
dt << Clear Select;
);
);Esto debería ayudarlo a obtener las filas que cumplen con su condición en una lista. A partir de ahí, debería poder extraer los 3 principales en cada caso. Para responder a su pregunta, no estoy al tanto de excluir solo celdas
Re: Los 3 primeros valores de celda en cada columna@txnelson Bueno, después de establecer el valor de una celda en valor faltante/ocultar/excluir el valor de una celda, me gustaría ejecutar algunos modelos en la tabla de datos y luego decidir mantenerlo así o incluir el valor en la celda nuevamente. es posible?
Re: Los 3 primeros valores de celda en cada columnaEn JMP, no "Excluye" una celda individual, sino que establece el valor de la celda en un "Valor perdido".El símbolo del valor perdido es "."
Si la columna es de un tipo de datos de caracteres, establece el valor en ""
Re: Los 3 primeros valores de celda en cada columnaNi siquiera quiero excluir una fila entera. Quiero excluir solo celdas. Por ejemplo, en la tabla que publiqué, quiero poder excluir la celda en la columna "B" que está junto a la celda que tiene el valor 6.6 en la columna "Predicción B". Todavía estoy luchando por descubrir cómo puedo usar expresiones regulares para hacer coincidir tales cadenas. He hecho 2 listas, una que contiene nombres de columnas que tienen la palabra "Predicción" y otra que no. Le agradecería que también me señalara cualquier función que crea que funcionaría mejor con este tipo de tablas. Acabo de empezar a trabajar con JSL y todavía estoy luchando con él. Gracias de antemano por la ayuda.@uday_guntupalli
PD: ¿Eso significa que no hay forma de que pueda excluir una sola celda de una columna en JSL?
Re: Los 3 primeros valores de celda en cada columna@amy ,
¿Está buscando excluir toda la fila o la fila de esa columna solamente? La razón por la que pregunto, estoy bastante seguro de que puede excluir toda la fila usando:
dt << Exclude ;
Sin embargo, si solo desea excluir la fila en una columna, no creo que sea posible. Entonces, ¿por qué no intenta almacenar los números de fila en una variable y luego excluye esas filas?
Re: Los 3 primeros valores de celda en cada columnaEsta es una forma de verificar los datos que deben eliminarse de mi análisis, por lo que debo hacerlo de la misma manera. Muchas gracias por toda la ayuda se los agradezco mucho @dale_lehman
Re: Los 3 primeros valores de celda en cada columnaNo hago muchas secuencias de comandos, así que dejaré eso para que alguien más te ayude.Solo diré que realmente no entiendo la razón por la que quiero excluir filas después de realizar estas operaciones; parecería mejor crear nuevas columnas con esas filas excluidas o configuradas como faltantes.Creo que la secuencia de comandos sería relativamente sencilla y no me gusta la idea de sobrescribir los datos originales (si eso es lo que sugiere).
Re: Los 3 primeros valores de celda en cada columna@dale_lehman Gracias por la ayuda. Actualicé mi script para seleccionar el valor máximo de cada columna y lo guardé en la variable "val". ¿Sabe cómo puedo excluir la celda con el número máximo en la primera columna, realizar algunas operaciones y luego excluir la celda con el número máximo en la segunda columna y así sucesivamente?
dt = Current Data Table();
col = dt << get column names( string );
nc = N Items( col );
For( i = 1, i <= nc, i++,
Col1 = Column( dt, i );
If( Contains( col[i], "Prediction" ),
Show( col[i] );
val = Abs( Col Max( Col1 ) );
Show( val );
MaxRow = dt << get rows where( As Column( Col1 ) == Abs( Col Max( Col1 ) ) );
);
);
Re: Los 3 primeros valores de celda en cada columnaAdjunté su ejemplo con un intento de usar las predicciones de la columna B como especificó.No estoy seguro de que esto haga exactamente lo que quieres, pero creo que está cerca.
Re: Los 3 primeros valores de celda en cada columna@dale_lehman bueno, no pude encontrar mucho sobre cómo puedo usar la función de clasificación de columnas. Puedo extraer un valor máximo, pero todavía no puedo entender cómo puedo seguir adelante con los 3 primeros.
Re: Los 3 primeros valores de celda en cada columnaLa función de clasificación de columnas (y algunas declaraciones IF) podrían ser la solución.