<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Intenté preguntar esto hace meses, pero estaba tan perdido que mi explicación era incoherente. Luego me retiré en la tarea antes de poder explicar. Así que aquí está mi mejor intento para explicar lo que quiero y lo que no funciona.
Lo que estoy haciendo: estoy creando un script que usa un gran conjunto de datos que cambiará constantemente, aunque los nombres de las columnas nunca lo harán. Necesito realizar una variedad de resúmenes y fórmulas. Mi estrategia es hacer algunas tablas de resumen para determinar qué categorías de datos tengo. El siguiente ejemplo es un gran ejemplo simplista de lo que estoy tratando de hacer. Utiliza el archivo grande class.jmp y está buscando las categorías de sexo. Una vez que sepa las categorías, "M", "F", creará nuevas columnas para cada categoría de variable, en este caso llamada: Ejemplo-F luego: Ejemplo-M y dentro de cada nueva columna habrá una fórmula que haga referencia a otras Columnas y hace cálculos de filas que hacen referencia a la nueva columna que se está creando.
Mi problema: no puedo conseguir que las referencias de la columna funcionen, en particular, la variable que llama a la misma columna en la que se crea la fórmula bajo . Vea abajo
//comienzo
try (close (dt, No save));
try (close (dt_categories, No save));
try (close (dt_data, No save));
Globos claros ();
dt = Abierto (" Camino \ big_class.jmp ");
// Crea una lista de género y reemplaza nombres. No hay problemas aquí.
dt_categories = dt << Resumen (
Grupo (: SEXO),
formato de nombre de columna de estadísticas ("columna"),
nombre de la tabla de salida ("Gender_Summary"));
genderlist = dt_categories: sex << obtiene valores;
gendercount = nrows (dt_categories);
dt_data = dt << Split (Split By (: SEX), Split (: HEIGHT), Output Table ("Split_Big_Class"), Columnas restantes (Drop all)
);
Para (i = 1, i <= gendercount, i ++,
// oldcol se crea a partir de la lista de género pero representa los nombres de las columnas en el nuevo dt_data y mi fórmula hará referencia a ellos. No hay problemas aquí.
oldcol = columna (lista de género );
// Tengo que nombrar la nueva columna diferente a la columna existente (antigua), de lo contrario, jmp incrementará los nombres y parece que realmente arruinará mis referencias de nombre de columna. No hay problemas aquí, no lo creo.
Newcolname = ("Ejemplo-" || lista de género );
// A continuación, he intentado crear la columna primero para que la siguiente fórmula pueda hacer referencia a una columna ya existente, pero no sé si esto es necesario.
Newcol = dt_data << Nueva Columna ( Newcolname , numérico);
// La siguiente línea es una fórmula funcional pero no usa mis variables como referencia. Puedes usar para ver lo que estoy tratando de hacer.
// Newcolname << Fórmula (If (Fila () == 1, 1 +: F,: Nombre ("Ejemplo-F") [Fila () - 1, Vacío ()] + 1));
// La siguiente línea es la fórmula que no funciona porque intenté insertar mis variables en la fórmula que funciona arriba. Aquí es donde está tirando errores.
Newcolname << Fórmula (If (Fila () == 1, 1 + oldcol , Newcol [Fila () - 1, Vacío ()] + 1));
);
¿Alguna sugerencia? Soy bastante nuevo en las secuencias de comandos y tratando de aprender sobre la marcha. ¡¡¡¡¡GRACIAS!!!!!
Lo siento, me perdí tu línea mostrando lo que estabas tratando de producir.
Prueba esto:
dt1 = Abrir ("$ SAMPLE_DATA / Big Class.JMP");
resume (categories = by (: SEX));
dt2 = dt1 << Split (Split By (: SEX), Split (: HEIGHT), Output Table ("Split_Big_Class"), Columnas restantes (Drop All));
para (i = 1, i <= nItems (categorías), i ++,
dt2 << newColumn ("Example-" || categories , personaje, fórmula(
Si (Fila () == 1,
1 + asColumn (categorías )
asColumn ("Ejemplo-" || categorías ) [Fila () - 1] + 1
);
);
);
);
¿Puede explicar con palabras lo que quiere que produzca su fórmula, por favor?
Parece que está intentando crear valores basados en datos de filas anteriores, ¿agregando a medida que avanza?
Si desarrolla en detalle cuál desea que sea el resultado final, con un ejemplo si es posible, sería fantástico.