Analogía JMP a SAS 'Hola todos
Soy un antiguo jefe de SAS (bastante competente en la programación Base ...). Pero... !
Me gustaría hacer una tarea bastante simple en JMP. Así que parece ...
Básicamente, me gustaría abrir CITIES.JMP y simplemente mantener todas las filas (y campos) que tienen un valor faltante en CO, y posiblemente guardar este subconjunto en una nueva, por ejemplo CITIES_MISS.jmp.
El equivalente básico es "donde falta CO";
Simplemente no puedo resolverlo. Incluso si mis consultas parecen funcionar, tan pronto como abro el subconjunto, todavía encuentro todas las filas de datos, a veces solo marcadas. Por favor, ayude con el código de muestra, y tal vez explique las diferencias lógicas entre JMP y la lógica SAS, si hay alguna.
Gracias y saludos cordiales
Novato
Re: JMP analogía a SAS 'El JSL requerido sería algo como:
NamesDefaultToHere(1);
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
missingCORows = dt1 << getRowsWhere(IsMissing(:CO));
dt2 = dt1 << Subset(Rows(missingCORows));
dt2 << setName((dt << getName)||"_MISS");
Pruebe 'Ayuda> Libros> Guía de secuencias de comandos' y 'Ayuda> Índice de secuencias de comandos'. En lugar de pensar demasiado en las comparaciones, comenzaría con un problema y un código de trabajo que está "cerca" de una solución. La experiencia demuestra que recibirás mucha ayuda aquí.
Re: JMP analogía a SAS 'Gracias. Ahora tengo las filas.
Ayer pasé unas cuatro (!!) horas, y ni siquiera pude lograrlo.
ese resultado utilizando Scripting Guide, JSL Syntax Reference, WWW.
Entonces, sea paciente, por favor sea paciente si le pregunto cómo guardar también todas las
otros campos CTITIES, por ejemplo CIUDAD, SO2, etc. Saludos cordiales.
Re: JMP analogía a SAS 'Estoy seguro de que está buscando una versión de script de esta y la dejaré para que otra persona la proporcione. Personalmente, puedo hacer el 95% de lo que quiero sin ningún script, y para mí, esta es una diferencia importante entre JMP y SAS (o casi cualquier otro programa, en realidad). Para hacer lo que quiera, sin hacer scripts, simplemente vaya a Fila - Selección de fila - Seleccione Dónde y resalte el nombre de la columna CO y déjelo en blanco. Seleccionará las 5 filas que estás buscando. Luego, en Tablas, haga clic en Subconjunto, y obtendrá todas las columnas y solo esas 5 filas.
Desafortunadamente, no creo que haya una forma para que JMP guarde automáticamente lo que acabo de hacer. Si realiza un análisis y va a guardar el script, el script se genera automáticamente. Pero no creo que haya una manera de que JMP genere automáticamente manipulaciones en la tabla. Desearía que existiera, y tal vez haya algo de lo que no estoy al tanto.
Re: JMP analogía a SAS 'Muchas gracias por su evaluación directa.
Parte de mi trabajo es evaluar los puntos fuertes y los límites de JMP para automatizar los procesos mediante scripts como un requisito comercial.
Si JMP no puede manejar los procesos ETL más simples, tendríamos que continuar sin JMP.
Lo que sería una pena, sin embargo, porque su cartera de análisis parece ser agradable y elegante.
Re: JMP analogía a SAS 'Por supuesto JMP puede hacer lo que quieras con un script. Simplemente estoy señalando que lo que usted solicitó se puede hacer sin uno. Todo lo que hago sin un script tiene un script que se ejecuta en segundo plano. Las 4 horas que pasó tratando de hacer que JMP funcionara fueron 4 horas tratando de averiguar la secuencia de comandos adecuada. Pasé 5 segundos realizando la tarea sin un script. Entiendo, su trabajo es evaluar JMP y un requisito es la creación de scripts. Bueno, ese requisito se cumple. Si su preocupación es evaluar el lenguaje de scripting, entonces debe esperar a que otros respondan; hay muchas personas en este foro que pueden hablar sobre el JMP scripting en comparación con otros idiomas.
Re: JMP analogía a SAS 'Tal vez reformule mi solicitud a la comunidad JMP. ¿Puedes recomendar un
¿Foro específico de JMP donde podría solicitar un posible enfoque de script JMP?
Re: JMP analogía a SAS 'Soy un poco confuso en cuanto al alcance de lo que quieres hacer cuando dices ' donde podría pedir un posible enfoque de script JMP '. ¿A qué, exactamente?
Como se mencionó, este es un buen lugar para obtener soporte para todo lo relacionado con JMP, incluido JSL. Pero, como tal vez este hilo muestra, puede ser difícil obtener una imagen clara: dependiendo de cómo se formule la pregunta, las respuestas pueden o no ser útiles de inmediato, y pueden o no suponer más contexto y conocimiento previo que el interrogador. tiene.
Y, como ya se dijo, las 'comparaciones' pueden ser difíciles de codificar: son aún más difíciles para las aplicaciones de software.
Si hay una intención seria de ver cómo JMP puede satisfacer sus necesidades en relación con otro software (incluido SAS), entonces sé que el equipo local de JMP estará más que feliz de participar y lo ayudará a resolverlo.
Re: JMP analogía a SAS 'Muchas gracias por su amable comentario. Tal vez no me aclaré lo suficiente.
Como resulta que soy más que nuevo en JMP, sería mejor tener un puntero para
qué grupo o lista de JMP podría publicar mi pregunta sobre cómo filtrar un JMP
conjunto de datos en un subconjunto por la condición "misisngs". Me doy cuenta ahora como yo
redacté el "tema" en mi publicación original, eso es más que engañoso.
Desafortunadamente, me di cuenta de que después de que ya estaba fuera y demasiado tarde ...
Re: JMP analogía a SAS: Filtrar datos por valor faltante en una columnaCerca, pero ...
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step [DOESNT WORK: SAVED dataset still contains all (N=52) data rows instead of selected (N=5) rows]
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
Incluso probé una variante como
Close( dt2, save( "V:/Process/.../Data/AnewDEMOname.jmp" ) );
Simplemente no funciona. El conjunto de datos GUARDADO todavía contiene todas las filas de datos (N = 52) en lugar de las filas seleccionadas (N = 5)].
¿Es este un error JMP?
Estoy usando JMP ® 14.0.0 (64 bits) en Microsoft Windows 10 Enterprise de 64 bits.
Re: JMP analogía a SAS: Filtrar datos por valor faltante en una columnaLo siento, parece que me he perdido la asignación de la tarea para dt2.
Debería ser:
//open data table
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
//select all rows of data table where column CO is missing
dt1 << Select Where( Is Missing( :CO ) );
//create a subset of data table with only selected rows, keeping all columns
//note the assignment of the result of the subset into the variable dt2
dt2 = dt1 << subset( selected rows( 1 ) );
//note that renaming and saving can be done in one step
dt2 << save( "V:/Process/.../Data/AnewDEMOname.jmp" );
Voy a corregir el post anterior para que nadie que lea esto más tarde se confunda.
Mis disculpas. Por favor continúe haciéndonos saber su progreso.
Re: JMP analogía a SAS 'Siguiendo a @ian_jmp la respuesta, tiene razón, este es el lugar para hacer sus preguntas sobre JMP.
Todos los miembros aquí estarán encantados de ayudarlo a señalarle la dirección correcta. Sigue haciendo preguntas y déjanos ayudarte.
Dicho esto, la mejor manera de aprender JSL es aprender a usar JMP de forma interactiva. Trate de no hacer suposiciones sobre cómo hacer las cosas según la forma en que las haría en SAS. Los dos productos, JMP y SAS están construidos con diferentes patrones de uso, por lo que hacen las cosas de manera diferente.
La mayoría del lenguaje de scripting se basa en la automatización de JMP utilizando los mismos comandos que usaría para hacer las cosas de manera interactiva. Por ejemplo, en tu pregunta original querías saber:
Básicamente, me gustaría abrir CITIES.JMP y simplemente mantener todas las filas (y campos) que tienen un valor faltante en CO, y posiblemente guardar este subconjunto en una nueva, por ejemplo CITIES_MISS.jmp.
La forma de hacerlo de forma interactiva es abrir CITIES.JMP, seleccionar todas las filas donde falta CO y luego usar Tablas-> Subconjunto para crear una nueva tabla de datos.
En consecuencia, el JSL hace esto sigue el mismo patrón:
//open data table
dt1 = Open("$SAMPLE_DATA/Cities.jmp");
//select all rows of data table where column CO is missing
dt1 << Select Where(is Missing(:CO));
//create a subset of data table with only selected rows, keeping all columns
dt2 = dt1 << subset(selected rows(1));
//note that renaming and saving can be done in one step
dt2 << save("A new name.jmp");
Tu dijiste:
Si JMP no puede manejar los procesos ETL más simples, tendríamos que continuar sin JMP.
Lo que sería una pena, sin embargo, porque su cartera de análisis parece ser agradable y elegante.
Creo que la mayoría aquí diría que JMP puede manejar procesos ETL simples (y complejos). Entonces, si no puedes averiguar cómo hacerlo, solo pregunta.
Aquí hay una lista de Los mejores recursos para aprender JMP.
Avísenos mientras continúa explorando JMP y estaremos encantados de ayudarle.
[Nota 20 de mayo de 2019: el código anterior se ha corregido para mostrar una asignación a dt2. Originalmente esto fue omitido accidentalmente. Mensajes posteriores notaron esto y se ha corregido aquí.]
Re: JMP analogía a SAS: Filtrar datos por valor faltante en una columnaAHORA funcionó. Como un encanto. Muchas gracias.