Seleccionar dónde una columna contiene un valorTengo un script que se supone que:
1) Permitir que el usuario elija varios archivos para abrir
2) Cierre todos los archivos que no tengan datos (es decir, solo una columna con un valor que diga NA)
3) Cierre cualquier archivo que no contenga 1146 en la columna 7 (la columna se llama Sellador # en algunos archivos y no tiene nombre en otros, además es una columna de caracteres en algunos archivos y una columna numérica en otros)
He conseguido que las dos primeras cosas funcionen, pero estoy luchando con la tercera. Aquí está el guión que tengo hasta ahora.
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
check = DT << Get Rows Where( Contains( Column( 7 ), "1146" ) );
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Lo mejor que puedo decir es que el problema es la línea. comprobar = DT<< Obtener filas donde ( Contiene ( columna ( 7 ), "1146" )); , pero no puedo encontrar la manera de solucionarlo.
¿Alguna sugerencia?
Re: Solicitar al usuario que seleccione una columna(s) mediante una ventana emergenteDescarga el Addin a tu carpeta de descargas
Luego vaya a JMP y
Archivo==>Abrir
Ir a la carpeta de descarga
Haga clic en el archivo Runs Test.jmpaddin
Luego vaya a la flecha hacia abajo para el botón Abrir y seleccione
Abrir con Addin Builder
En Addin Builder, seleccione la pestaña Elementos de menú
Luego haga clic en la entrada Runs Test
En el área "Ejecutar este JSL", verá el script incrustado
Córtelo y péguelo en una ventana de script
Re: Solicitar al usuario que seleccione una columna(s) mediante una ventana emergenteGracias Jim, encontré el complemento, ¿cómo miro el código del script?
Sam
Re: Solicitar al usuario que seleccione una columna(s) mediante una ventana emergenteHola Jim, ¿puedes ser más específico? ¿Es eso un script integrado?
Gracias
Sam
Re: Solicitar al usuario que seleccione una columna(s) mediante una ventana emergenteLe sugiero que busque en el complemento JMP en "Prueba de ejecución", que contiene un ejemplo de cómo hacer lo que está pidiendo hacer con su ejemplo. Proporciona un cuadro de diálogo que permite seleccionar columnas y colocarlas en cuadros de selección. También tiene capacidad de filtrado y capacidad de recuperación.
Ejecuta la prueba (Prueba de Wald-Wolfowitz) y el cuadro de diálogo Implementación JSL de la plataforma JMP
Solicitar al usuario que seleccione una columna (s) por ventana emergenteHola chicos, estoy tratando de hacer que el script solicite al usuario que seleccione 2 columnas coordenadas x y otra coordenada y de una tabla.
El siguiente gráfico es lo que me gusta que haga el script. El usuario elige la coordenada x,y y luego la uso para pasarla como una variable. Lo necesito en el guión más tarde para hacer el mapeo de troqueles. ¿algunas ideas? Gracias, el gráfico a continuación es una tienda de fotos para mostrar el resultado final.
Gracias.

Re: Seleccionar donde una columna contiene un valorIntenté depurar esa sección del script, pero nunca pude hacer que funcionara. Terminé con esta versión que funcionaba con algunas ligeras modificaciones.
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save )
,
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
name = Char( Column( DT, 7 ) << get name );
Print( name );
Eval( Parse( "check = DT << Select Where( Contains( " || ":" || name || " , " || "char(1146)))" ) );
If( N Rows( DT << Get Selected Rows ) == 0,
Close( DT, No Save )
,
DT << Invert Row Selection;
DT << Delete Rows;
DT << Clear Select;
//oldname = char(DT<< Get Name());
//rename = char(Word(-1, oldname, "-"));
//DT<<SET name=""></SET>
Re: Seleccionar donde una columna contiene un valorAquí hay una versión ligeramente modificada de su código, que enumera nuestros valores de la declaración Get Rows Where y el valor de verificación.
Names Default To Here( 1 );
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
Wait( 0 );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( DT, 7 ) << Data Type( Character );
Names Default To Here( 1 );
//Current Data Table( DT );
Eval(
Parse(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 5 ) << get name ) || " , \!"1146\!" ) ) );"
)
);
Show(
"check = DT << Get Rows Where( Contains( " || ":" || Char( Column( DT, 7 ) << get name ) || " , \!"1146\!" ) ) );",
check
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Es posible que desee ejecutar el depurador JMP en esto. Mi suposición es que hay una falta de coincidencia con la columna 7 o algo así. Sé que el código funciona, ya que lo probé en una tabla de datos de muestra que tenía una columna con un par de filas que tenían su 1146 en los valores de la columna.
Re: Seleccionar donde una columna contiene un valorIntenté incluir la sección en el guión, pero parece que no funciona. Todavía cierra los archivos en blanco, pero cierra los archivos que tienen datos y contienen 1146. Intenté cambiar If(NRows(check)==0 to !=0, pero no pareció hacer la diferencia. Y este error aparece en el registro:
Inesperado ")". Quizás falta un ";" o ",".
Línea 1 Columna 64: ...( :Sealer # , "1146" ) ) ►);...
El texto restante que se ignoró fue
Aquí está el guión actualizado:
Files = Pick File(
"Select JMP File",
"$DESKTOP\Burst Data for Spencer",
{"Excel|csv;xlsx;xls", "JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
"",
"multiple"
);
For( i = 1, i <= N Items( Files ), i++,
DT = Try( Open( Files[i] ) );
DT << Set Name( Files[i] );
If( N Cols( DT ) == 1,
Close( DT, No Save ),
Column( 7 ) << Data Type( Character );
Names Default To Here( 1 );
Current Data Table( DT );
Eval(
Parse( "check = DT << Get Rows Where( Contains( " || ":" || Char( Column( 7 ) << get name ) || " , \!"1146\!" ) ) );" )
);
If( N Rows( check ) == 0,
Close( DT, No Save )
);
);
);
Re: Seleccionar donde una columna contiene un valorEste código funcionará
Names Default To Here( 1 );
dt = Current Data Table();
Eval( Parse( "check = DT << Get Rows Where( Contains( " || ":" ||
Char( Column( 3 ) << get name ) || " , \!"1146\!" ) ) );" ) );