Estoy confundido acerca de las variablesTengo un problema conceptual al descubrir cómo funcionan las variables locales. Simplificaré el tema para centrarme en lo que me resulta confuso.
Creo una variable local, digamos t0, con un valor de 5. Luego escribo una fórmula de columna para incrementar este valor en 1... ya sea t0=t0+1 o t0+=1 (no parece importar), El resultado que esperaba era que cuando JMP evaluara cada celda de la columna, incrementaría la variable para obtener 6, 7, 8, etc. a medida que avanzaba hacia abajo en la columna. En cambio, obtengo una columna de 6. Entonces la fórmula no incrementa la variable.
¿Alguien puede explicarme qué es lo que no entiendo acerca de cómo JMP maneja las variables locales? Además, dado que mi enfoque no funciona, ¿hay otra forma de incrementar una variable? Puedo hacerlo con Lag pero parece innecesariamente complejo para algo tan simple.
Además, no tengo clara la distinción entre variables locales, variables de tabla y parámetros.
Gracias de antemano por toda la ayuda brindada.
Automatización y secuencias de comandosRe: Estoy confundido acerca de las variablesYou might be interested in the Row() function inside of a column formula -- it returns the current row that the formula is being run against. As for variables and scoping -- it is usually best to be explicit about variable scopes. Thus to use a global counter, do ::t0 += 1 -- the double colon explicitly scopes the name to the global namespace. If you want a local name, explicitly scope it, i.e., local:t0 There is also the Here namespace, and again it is best to be explicit in scoping. I recommend being explicit as JMP is buggy and will not always adhere to the stated scoping rules.
Re: Estoy confundido acerca de las variablesSupongo que escribiste algo como lo siguiente como fórmula de columna:
Local({t0 = 5}, t0 = t0 + 1)
Y esperas que la tarea inicial
t0 = 5
solo ocurre una vez cuando la tabla de datos evalúa una columna, celda por celda de arriba a abajo.
Has visto que eso no está sucediendo. Lo que ve es que la asignación ocurre cada vez que se evalúa una celda. Si tiene experiencia en programación SAS, es posible que esté buscando algo similar a la declaración RETAIN en SAS. No tengo conocimiento de que tal cosa exista en el lenguaje de programación de JMP.
Pero tuve la necesidad similar de hacer cálculos que necesitan recuperar resultados en cálculos anteriores.
Si el resultado es intermedio y temporal, lo almacenaré en una columna separada. Si el resultado es solo un valor en la celda anterior de la misma columna, simplemente me referiré a la celda anterior. De cualquier manera, es posible que necesites usar la función Row() que mencionó @ErraticAttack .
Adjunto un ejemplo para ilustrar.