Tabla de datos: ¿Existe la columna de mensaje (nombrecol)? (:green_heart:)☐ Nueva característica genial
☑ ¡Podría ayudar a muchos usuarios!
☑ elimina un "error"
☐ Es bueno tenerlo
☐ nadie lo necesita
¿Hay una columna nombre de columna en mi tabla de datos?
Esta es una de las preguntas que más se hacen en la comunidad:
https://community.jmp.com/t5/Discussions/Check-column-name-if-existing/mp/312011/highlight/true#M56...
https://community.jmp.com/t5/Discussions/How-to-check-if-list-of-columns-exist-and-report-those-that...
https://community.jmp.com/t5/Discussions/If-column-exists/td-p/348
https://community.jmp.com/t5/Discussions/how-to-creat-new-column-if-same-name-column-does-not-exist/...
https://community.jmp.com/t5/Discussions/Create-a-new-Row-column-only-if-it-does-not-exist/td-p/3091...
https://community.jmp.com/t5/Discussions/Determining-if-a-column-exists/mp/6268#M6267
https://community.jmp.com/t5/Discussions/Validate-column-name-exists-before-graphing/mp/5088#M5087
Entonces, parece que no es lo suficientemente sencillo cómo se implementa en este momento.
Pero es aún más interesante y conlleva muchos peligros.
Un usuario que no conoce los obstáculos asociados con las convenciones de nombres de JSL, probablemente simplemente escriba
Contains( dt << Get Column Names(String), "age" )
en su código. Bastante fácil...
pero extremadamente peligroso - ver:
https://community.jmp.com/t5/Discussions/check-if-column-exists/mp/572468
Lo que parecen discusiones extrañas de algunos expertos en scripting JSL muestra que la afirmación anterior, seguro, funcionará para muchos casos, pero:
fallará una vez que haya espacios, letras mayúsculas o caracteres especiales en los nombres de las columnas.
Para evitar que los usuarios utilicen este código peligroso, lo mejor es "institucionalizar".
- es decir, proporcionar a los usuarios una solución sencilla que tenga en cuenta automáticamente todos los problemas.
Mi deseo:
Debería ser posible preguntar a una tabla de datos:
dt << contains column("colname")
Esta función puede tener en cuenta todos los obstáculos:
- compare with exact match - or check match for as name("colname")<FONT face="arial,helvetica,sans-serif">, contabilizando espacios</FONT>
- distinguir o no distinguir letras mayúsculas/minúsculas
- manejar caracteres especiales
El beneficio:
- menos preguntas en la comunidad
- código automáticamente mejor.
- menos frustración.
Más deseos enviados por 
Automatización y scriptingRe: tabla de datos: ¿existe la columna de mensaje (colname)?Gracias 
Re: tabla de datos: ¿existe la columna de mensaje (colname)? - El estado cambió a: Sí, ¡estén atentos!Development is exploring a solution: "tener un mensaje sobre la mesa para preguntar directamente, comodt << Has Column("age"), potencialmente con una opción para dar respuestas diferentes si desea coincidencias exactas o coincidencias de nombre (sin distinguir entre mayúsculas y minúsculas)".
Cambiando a Sí, estad atentos.
Re: tabla de datos << ¿la columna existe("nombre")? - Estado cambiado a: InvestigandoRe: ¿Existe tabla de datos << columna ("nombre")?Gracias @hogi y @jthi por comentar. Cambiando el estado a investigando.
Re: ¿Existe tabla de datos << columna ("nombre")? - Estado cambiado a: ReconocidoHola @hogi , ¡gracias por tu sugerencia! Hemos capturado su solicitud y la tomaremos en consideración.
Re: tabla de datos << ¿la columna existe("nombre")?¿Podría ser mejor hacerle entender a JMP que se trata de nombres de columna iguales o diferentes? Por supuesto, esto podría estropear las cosas, por lo que podría no ser tan fácil de implementar.
Algo es un poco confuso aquí:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt:age << set name("a g e");
dt:age[1] = 999;
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
dt << New Column("age", Numeric, Ordinal);
Show(Column Name(2) == Column Name(6)); // Column Name(2) == Column Name(6) = 1; // Columns don't need unique names?
Show(Column(dt, "age")); //Column(dt, "age") = Column("age");
dt:age[1] = 9999;
Show(dt:age[1]); //dt:age[1] = 9999;
wait(1);
dt << Delete Column("age");
Show(Column(dt, "age")); //Column(dt, "age") = Column("a g e");
Show(dt:age[1]); //dt:age[1] = 999;
¿Las columnas siguen algún nombre específico? Se requieren seguir nombres para comenzar con caracteres alfabéticos o guiones bajos , pero los espacios en blanco sí importan (a veces) para las columnas. ¿Quizás el problema (si lo hay) es cómo funciona la referencia a columnas?