Re: Cómo usar "sentencias condicionales" para seleccionar filas de datos para luego ejecutar, por ejemplo, Col A simple - Col CMUCHAS GRACIAS A: Sarah Seligman, soporte técnico de SAS por brindar una solución a mi pregunta.El cortar/pegar de su correo electrónico está debajo, pero se perdió el formato, así que adjunté su archivo de datos X.jmp y un pdf de su respuesta donde podría ser más fácil ver el formato JSL en la fórmula.Nuevamente, mi agradecimiento a Sarah y Jim por responder inicialmente a mi pregunta de JSL.
___
Hola Jeff, gracias por tu paciencia. Adjunté una tabla de datos que contiene una fórmula que hace lo que creo que describiste. Con respecto a la parte de su pregunta donde preguntó "¿Es posible estructurar declaraciones IF de una manera que omita la acción ELSE?" La respuesta simple a eso es sí: simplemente deje en blanco la parte "Else" de la declaración IF condicional. Entonces, con una instrucción IF, se vería así en el Editor de fórmulas: En JSL, es decir: If(:YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar", :TRT 03 - :TRT 01 ) Con dos declaraciones IF, se vería así: En JSL, es decir: If( :YEAR == "2020" & :CROP == "Corn" & :TYPE == "Foliar ", :TRT 03 - :TRT 01, :YEAR == "2020" & :CROP == "Corn" & :TYPE == "IF", :TRT 05 - :TRT 01 ) Si está utilizando el Editor de fórmulas en su lugar que JSL, puede insertar una nueva condición IF haciendo clic en el icono de intercalación. En la captura de pantalla a continuación, hice clic tres veces para agregar tres campos de expresión If más. Volviendo al objetivo que describió: creo una nueva columna llamada "16FLOZ_AddedValue" y quiero que la fórmula funcione: Si AÑO = 2020, CULTIVO = Maíz, TIPO = Foliar, la fórmula debe devolver el valor de "TRT3" menos la columna " TRT1"; sin embargo, si AÑO = 2020, CULTIVO = Maíz, TIPO = SI (es decir, en surco), la fórmula debe devolver el valor de "TRT5" menos la columna "TRT1" en la misma columna denominada "16FLOZ_AddedValue"; sin embargo, si AÑO = 2021, CULTIVO=Maíz, TIPO=Foliar, la fórmula debe devolver el valor de "TRT4" menos la columna "TRT1"" en la misma columna denominada "16FLOZ_AddedValue"; a continuación se muestra la fórmula para la nueva columna 16FLOZ_AddedValue basada en eso descripción. En la tabla de datos adjunta, puede hacer clic en el ícono azul más junto al nombre de la columna en el panel de columnas para verlo en el editor de fórmulas. En JSL, esta fórmula se escribe como: If( :AÑO == "2020" & :CULTIVO == "Maíz" & :TIPO == "Foliar", :TRT 03 - :TRT 01, :AÑO == "2020" & :CULTIVO == "Maíz" & :TIPO == "SI", :TRT 05 - :TRT 01, :AÑO == "2021" & :CULTIVO == "Maíz" & :TIPO == "Foliar", : TRT 04 - :TRT 01 ) También declaró: Con respecto a las declaraciones ELSE, mi deseo de que la fórmula no haga ningún tipo de pasos de acción ocultos cuando no se cumple la combinación "IF". En otras palabras, por ejemplo, si AÑO=2020, CULTIVO=Maíz, TIPO=Foliar, solo calcule TRT3-TRT1 y omita cualquier otro tipo de acción, es decir, deje intactos todos los valores de celda restantes; y pase a las siguientes declaraciones combinadas IF que podrían dirigir la fórmula para tomar TRT5-TRT1, etc. ¿Es posible estructurar declaraciones IF de manera que omita la acción ELSE? La fórmula que creé establece el valor apropiado cuando se cumplen los criterios para la primera condición IF, luego pasa a la siguiente condición IF, y así sucesivamente. No tiene que especificar ninguna condición/valor ELSE. Espero que esta información sea útil. Por favor, hágamelo saber si tiene alguna pregunta adicional. Saludos cordiales, Sarah Seligman Compartir soporte técnico de JMP. Preguntar. Aprender. Conectar. - community.jmp.com Estaré encantado de seguir trabajando con usted si tiene alguna pregunta de seguimiento con respecto a este asunto; simplemente responda a este correo electrónico dentro de los 5 días hábiles. Si esta respuesta ha respondido completamente a su pregunta, responda para informarme que recibió este correo electrónico y que resolví este problema a su entera satisfacción. Anexos 7613517300.jmp (6 Kb)
Re: Cómo usar "sentencias condicionales" para seleccionar filas de datos para luego ejecutar, por ejemplo, Col A simple - Col CHola Jim, gracias por responder y agradezco cualquier ayuda que puedas ofrecer y perdón por la confusión. Intentaré aclarar y simplificar el tipo de fórmula que quiero.
Tengo una columna llamada AÑO y los valores son 2020 o 2021.
Tengo otra columna llamada CULTIVO y los valores son Maíz o Soya.
Tengo otra columna llamada TIPO y los valores son Foliar o SI (es decir, en el surco)
Tengo otras 10 columnas que representan el rendimiento medio de los tratamientos 1 a 10 (TRT1, TRT2,......,TRT10).
Quiero una fórmula para calcular el valor agregado de cada Tratamiento (diferentes dosis de producto) vs el Tratamiento Control (tasa 0).Aquí está el truco, los números de Tratamiento (que representan tasas de dosis 0, 1, 4, 8, 16, 32, 64 FL OZ/acre) diferían entre los 2 años y entre CULTIVO y TIPO.Por ejemplo, la tasa de dosis del producto de 16 FL OZ/acre fue TRT5 en 2020 tanto para maíz como para soja "IF", es decir, representa ensayos en surco, y fue TRT3 en ensayos "foliares" para maíz y soja en 2021.
Así que tengo 8 combinaciones posibles de AÑO (2) x CULTIVO (2) x TIPO (2) y me gustaría 1 fórmula para completar los valores de cambio en bu./acre para una tasa de dosis de producto determinada frente al tratamiento de control (tasa 0)... así que, por ejemplo, creo una nueva columna llamada "16FLOZ_AddedValue" y quiero que la fórmula haga :
Si AÑO = 2020, CULTIVO = Maíz, TIPO = Foliar, la fórmula debe devolver el valor de "TRT3" menos columna "TRT1"; sin embargo,
Si AÑO = 2020, CULTIVO = Maíz, TIPO = SI (es decir, en surco), la fórmula debe devolver el valor de "TRT5" menos columna "TRT1" en la misma columna denominada "16FLOZ_AddedValue"; sin embargo,
Si AÑO = 2021, CULTIVO = Maíz, TIPO = Foliar, la fórmula debe devolver el valor de "TRT4" menos columna "TRT1"" en la misma columna denominada "16FLOZ_AddedValue";
etc. (lo siento, no sé cómo unir los "IF" en 1 fórmula).
Con respecto al comentario ELSE, eso solo se relaciona con mi deseo de que la fórmula no realice ningún tipo de pasos de acción ocultos cuando no se cumple la combinación "IF".En otras palabras, por ejemplo, si AÑO=2020, CULTIVO=Maíz, TIPO=Foliar, solo calcule TRT3-TRT1 y omita cualquier otro tipo de acción, es decir, deje intactos todos los valores de celda restantes; y pase a las siguientes declaraciones combinadas IF que podrían dirigir la fórmula para tomar TRT5-TRT1, etc.
Re: Cómo usar "sentencias condicionales" para seleccionar filas de datos para luego ejecutar, por ejemplo, Col A simple - Col CTengo problemas para interpretar su pseudocódigo.
Supongo que tiene una columna numérica llamada AÑO y que está comprobando si tiene el valor 2020
¿Tiene una columna llamada:
CULTIVO | Maíz | Haba de soja
o desea que una columna llamada CULTIVO tenga un valor de Maíz o Soya
Parece que tiene una columna llamada TIPO y está comprobando si tiene el valor "SI".
y si el valor es igual a "IF", entonces desea encontrar la diferencia entre una columna denominada Mean(YIELD(BU/A)_OR, 13) y una columna denominada Mean(YIELD(BU/A)_OR, 8)
o desea calcular la media de la columna RENDIMIENTO
y finalmente está haciendo referencia a una columna llamada ELSE y determinando si es igual a una columna llamada EMPTY.
Estoy seguro de que esto no es lo que quieres.
¿Puede proporcionar una muestra de lo que es la tabla de datos y luego describir con palabras lo que desea?
También sugiero que se tome el tiempo de leer la Guía de secuencias de comandos.Está disponible en la Biblioteca de documentación de JMP, en el menú desplegable Ayuda.
Cómo usar "declaraciones condicionales" para seleccionar filas de datos para luego ejecutar, por ejemplo, Col A simple - Col C¡Necesito ayuda!
Quiero seleccionar filas de datos de 3 o 4 columnas (basadas en declaraciones CONDICIONALES, luego ejecutar una fórmula bastante simple, por ejemplo, si se cumplen las condiciones al seleccionar las filas correctas)
Si(
:AÑO == 2020 , :CULTIVO | Maíz | Haba de soja ,
:TIPO == SI , :"Media(RENDIMIENTO(BU/A)_OR, 13)"n - :"Media(RENDIMIENTO(BU/A)_OR, 8)"n,
:ELSE == :EMPTY (Prefiero no usar la declaración ELSE si es posible... solo quiero que se cumplan las declaraciones condicionales anteriores para saber exactamente qué se agrega en la nueva columna a través de la fórmula)
O,
Si(
:AÑO == 2020 , :CULTIVO | Maíz | Haba de soja ,
:TIPO == FOLIAR , :"Media(RENDIMIENTO(BU/A)_OR, 4)"n - :"Media(RENDIMIENTO(BU/A)_OR, 1)"n,
O,
Si(
:AÑO == 2021 , :CULTIVO | Maíz | Haba de soja ,
:TIPO == SI , :"Media(RENDIMIENTO(BU/A)_OR, 6)"n - :"Media(RENDIMIENTO(BU/A)_OR, 2)"n
O,
Si(
:AÑO == 2021 , :CULTIVO | Maíz | Haba de soja ,
:TIPO == FOLIAR , :"Media(RENDIMIENTO(BU/A)_OR, 3)"n - :"Media(RENDIMIENTO(BU/A)_OR, 1)"n
)
Modelado Estadístico AvanzadoInvestigación del Consumidor y del MercadoIngeniería de Calidad y Procesos