Cómo seleccionar filas con múltiples criterios combinadosHola,
Estoy tratando de aislar un grupo específico dentro de un gran conjunto de datos usando los siguientes criterios: todos los sujetos que respondieron sí a 2 preguntas en particular Y todos los sujetos que respondieron sí a otras 3 preguntas combinadas (número total de preguntas = 9). Pude aislar a los sujetos que cumplían con el primer criterio con bastante facilidad, pero no sé cómo seleccionar sujetos que cumplieran con el segundo criterio (suponiendo que todos los sujetos que cumplieron con el primero fueron eliminados de la muestra de interés para evitar contarlos dos veces). ¡Cualquier ayuda sería muy apreciada!
Re: Como seleccionar filas con varios criterios combinados¡Gracias por la información! La modificación de Fruit_Scanner=="2" a Fruit_Scanner==2 funcionó de maravilla. Usando eso, finalmente pude obtener las filas que estaba buscando usando lo siguiente:
dt = Abierto ( "miarchivo.jmp" ) ;
dt << Selecciona Dónde ( : testendurance_T1 == 1 | : teststrong_T1 == 1 | Suma ( : testenjoy_T1 == 1 , : pruebasad_T1 == 1 , : testsports_T1 == 1 , : pruebasueño_T1 == 1 ,
: testperform_T1 == 1 , : testlibido_T1 == 1 , : maleenergy_T1 == 1 ) >= 3 ) ;
Gracias de nuevo a todos por todo!
Re: Como seleccionar filas con varios criterios combinadosSospecho que las columnas Fruit_scanner y Vegitable_Scanner son numéricas, no de caracteres.En su ejemplo "No operativo", especificó la comparación como:
Fruit_Scanner=="2".
Si Fruit_Scanner es una columna numérica, la comparación sería:
Fruit_Scanner==2
También mire los valores reales de Fruit_scanner.Pensé que indicaste que los valores eran 0 o 1. Si eso es cierto, entonces debes buscar:
Escáner_de_frutas==1
La respuesta original que publiqué es el formato que debe usarse para obtener lo que desea.Lo que se necesita son los nombres reales de las columnas y los valores reales en esas columnas.Si puede proporcionar eso, creo que podría darle el JSL
Re: Como seleccionar filas con varios criterios combinados¡Gracias Jim! Intenté reemplazar ese 4 con un 1 ya que sé que esta combinación es cierta para al menos una fila, pero aún no se seleccionó nada. En general, busco seleccionar filas que tengan "sí" (codificado como 1) como respuestas para al menos 3 preguntas de un grupo de 7 preguntas en total (por lo tanto,> = 3 en total). Algún consejo sería de gran aprecio.
¡Gracias de nuevo!
Re: Como seleccionar filas con varios criterios combinadosParece que te estás perdiendo cómo funciona la lógica.Lo que tienes debajo nunca puede tener una suma mayor a uno.
una comparación booleana siempre da como resultado un 0 o un 1.
Entonces, si estuviera verificando si una variable llamada X tiene un valor de 22, el comparador o
X==22 devolverá un 1 cuando sea verdadero y un 0 cuando sea falso.
en su ejemplo a continuación, el comparador de
Fruit+Screener == "2" & Vegitables_Screener == "2" solo puede ser verdadero (1) o falso (0).
La suma de esto solo puede ser un 0 o un 1, nunca un 4
Re: Como seleccionar filas con varios criterios combinados¡Gracias por la rápida respuesta Jeff! Agregar el " " hizo el truco en cuanto a aislar la fila que coincidía con ese número de identificación en particular. Como en realidad no sé si alguna fila coincide con los criterios de una respuesta "sí" (codificada como 1) a al menos 3 preguntas del conjunto de 7 preguntas mencionadas anteriormente, intenté ingresar un comando de suma para un par de variables que sabía que debería devolver algo. Esto es lo que probé:
dt = Abierto ( "miarchivo.jmp" ) ;
dt << Selecciona Dónde ( Suma ( :Fruit_Screener == "2" & :Verduras_Pantalla == "2" ) == 4 ) ;
Desafortunadamente no pasó nada. Sé que al menos una fila cumple con los criterios de "no" (codificado como 2) para estas dos variables, pero no se realizó ninguna selección. ¿Podría el _ en los nombres de las variables ser un problema o es un error con la fórmula de suma?
¡Gracias de nuevo!
Re: Como seleccionar filas con varios criterios combinados
@Jeff_Perkinson escribió:
Recuerde que las columnas de caracteres se muestran bien Las columnas numéricas y justificadas a la izquierda son izquierda bien.
Tengo mi izquierda y mi derecha en mal estado arriba. ¡Lo siento!
-Jeff
Re: Como seleccionar filas con varios criterios combinados¿La columna de su ID es de carácter o numérica?
Recuerde que las columnas de caracteres se muestran bien Las columnas numéricas y justificadas a la izquierda son izquierda bien.
Si su columna es de carácter, deberá poner el valor de ID entre comillas dobles para la comparación.
Por ejemplo:
:ID=="1234"
Re: Como seleccionar filas con varios criterios combinados¿La columna de su ID es de carácter o numérica?
Recuerde que las columnas de caracteres se muestran justificadas a la derecha y las columnas numéricas a la izquierda.
Si su columna es de carácter, deberá poner el valor de ID entre comillas dobles para la comparación.
Por ejemplo:
:ID=="1234"
Re: Como seleccionar filas con varios criterios combinados¡Gracias a todos! Intenté modificar el código, pero aún no funcionaba, así que ingresé a la Guía de secuencias de comandos de JMP para tratar de resolver las cosas. Pude seleccionar todas las filas usando este código:
dt = Abierto ( "miarchivo.jmp" ) ;
dt<
Como esto funcionó, traté de buscar un código más simple que el original. Tenía que ver si podía encaminar las cosas usando las instrucciones de JMP. Intenté seguir el código sin éxito:
dt = Abierto ( "miarchivo.jmp" ) ;
dt << Selecciona Dónde ( :ID==10322 ) ;
Lo ejecuté sin que apareciera ningún mensaje de error, pero no pasó nada. Revisé la fila específica que debería haberse seleccionado pero aún no estaba seleccionada. Lo intenté de nuevo pero aún nada. Al entrar en el registro del script, encontré lo siguiente:
//:*/
dt = Abrir( "miarchivo.jmp" );
dt << Seleccione Dónde ( :ID==10322 );
/*:
Scriptable[]
//:*/
dt = Abrir( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleccione Dónde ( :ID==10322 );
Intenté cambiar el código a ID=10322 para ver si marcaba la diferencia y obtuve lo siguiente:
/*:
//:*/
dt = Abrir( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleccione Dónde ( :ID=10322 );
/*:
Use == para comparar, = es asignación
Use == para comparar, = es asignación{1}
//:*/
dt = Abrir( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleccione Dónde ( :ID=10322 );
/*:
Use == para comparar, = es asignación
Use == para comparar, = es asignación{1}
//:*/
dt = Abrir( "Pre_Post_Freshman_Screener_.jmp" );
dt << Seleccione Dónde ( :ID=10322 );
/*:
No puedo dejar de pensar que esto debe ser un simple error, pero todavía estoy perplejo. ¿Alguna idea?
¡De nuevo, gracias por tu ayuda!
Re: Como seleccionar filas con varios criterios combinadosEl comentario de Mark a continuación es correcto.En el ejemplo que te puse tenía un comentario
/* or >= 3 if that is what you want */
incrustado en una línea de código.Este tipo de comentario comienza con "/*" y busca "*/" para finalizar el comentario.Dado que su código solo tiene el /*, el ");" en la siguiente línea se considera parte del comentario en curso
Re: Como seleccionar filas con varios criterios combinadosComenzó un comentario en la penúltima línea, por lo que no se ve el paréntesis de cierre.
Re: Como seleccionar filas con varios criterios combinadosMuchas gracias Jim por la rápida respuesta. Usando mis variables y 1 como el código sí, probé lo que me diste:
dt = Tabla de datos actual () ;
dt << seleccionar filas donde (
testendurance_T1 == "1" & teststrong_T1 == "1" & Suma (
testenjoy_T1 == "1" ,
pruebasad_T1 == "1" ,
testsports_T1 == "1" ,
pruebasueño_T1 == "1" ,
testperform_T1 == "1" ,
testlibido_T1 == "1" ,
maleenergy_T1 == "1"
) > = 3 /*
);
y obtuve el siguiente error:
Fin inesperado de la entrada. Tal vez falte un "," o ")". Intentando analizar los argumentos de la función "seleccionar filas donde". Línea 12 Columna 4: );►
Revisé la fila 12 y no cumple con ninguno de los criterios de inclusión. Claramente me estoy perdiendo algo, pero no puedo entender qué.
¡Gracias de nuevo!
Re: Como seleccionar filas con varios criterios combinadosA continuación se muestra un script "Seleccionar filas donde" que muestra la lógica de lo que debe hacer.Si desea hacer esto de forma interactiva, simplemente tome el componente lógico de la declaración e incorpórelo:
Filas==>Selección de Fila==>Seleccionar Dónde
dt = Current Data Table();
dt << select rows where(
q1 == "Yes" & q2 == "Yes" & Sum(
q3 == "Yes",
q4 == "Yes",
q5 == "Yes",
q6 == "Yes",
q6 == "Yes",
q7 == "yes",
q8 == "Yes",
q9 == "Yes"
) == 3 /* or >= 3 if that is what you want */
);