Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaSe encontraba con un problema en el que las filas con varios nombres de columna no se manejaban correctamente.Aquí está mi intento de resolver su problema.

Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
current data table(dt);
// Build execution string
sumString = "";
for each row(
if(:Yield SummaryBins != "",
i=1;
while(word(i,:Yield SummaryBins,"[] ") != "",
sumString = sumString || ", :\!"" || word(i,:Yield SummaryBins,"[] ") || "\!"n";
i++;
)
)
);
// Remove first comma
sumString = substr(sumString, 1);
// Execute new column string
eval(parse("dt2<<NEW column=""></NEW>Re: Cómo crear una fórmula de columna usando un nombre de columna de una listagracias jim
Tu código funciona. Quiero crear columnas separadas para cada grupo.
Por ejemplo: en el caso a continuación, hay dos grupos Abiertos y Cortos que contienen el nombre de la columna respectiva.
Quiero tener dos columnas diferentes con una fórmula que sume los valores respectivos.
Columna 1 (Suma de la columna (39, 41, 43)) y Columna 2 (Suma de la columna (38, 40, 42)) en la tabla Resumen

Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaEs cuestión de ampliar el código que proporcioné.
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Build execution string
openString = shortsString = "";
For Each Row(
If( :Yield SummaryBins != "",
If( :Yield SummaryLabel == "Opens",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
openString = openString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
If( :Yield SummaryLabel == "Shorts",
i = 1;
While( Word( i, :Yield SummaryBins, "[] " ) != "",
shortsString = shortsString || ", :\!"" || Word( i, :Yield SummaryBins, "[] " ) || "\!"n";
i++;
);
);
)
);
// Remove first comma
openString = Substr( openString, 1 );
shortsString = Substr( shortsString, 1 );
// Execute new column strings
Eval( Parse( "dt2<<NEW column=""></NEW>
Tómese el tiempo para estudiar el código provisto y responder con preguntas adicionales cuando no comprenda cómo funciona el código.
Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaPor supuesto que puede... ¿cuáles son las reglas?Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaHola @txnelson , ¿podrías aconsejarme?
Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaMi lectura de su descripción es que la regla que tiene es crear una nueva columna para cada fila en la tabla de condiciones que tenga un valor en la columna Yield SummaryLabel.
Así que le sugiero que lea cada fila en la tabla de condiciones, y cuando encuentre una fila con un valor en la columna Yield SummaryLabel, cree la nueva columna.
Hay un caso en el que tienes un problema.La fila 14 que tiene SYL_Yield especificado, tiene un valor de 1 para Yield SummaryBins.No hay una columna llamada "1".

Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaLa fila 14 se puede excluir. ¿Puedes compartir el código? Solo quería referirme y tener una idea.
Re: Cómo crear una fórmula de columna usando un nombre de columna de una listaNames Default To Here( 1 );
dt = Data Table( "Condition table" );
dt2 = Data Table( "Soft Bin Summary" );
Current Data Table( dt );
// Rule: Create a new Summary Column for each row in the Condition Table
// that has a value in the Yield SummaryLabel column
For( i = 1, i <= N Rows( dt ), i++,
If( dt:Yield SummaryLabel[i] != "",
theString = "";
k = 1;
While( Word( k, dt:Yield SummaryBins[i], "[] " ) != "",
theString = theString || ", :\!"" || Word(
k,
dt:Yield SummaryBins[i],
"[] "
) || "\!"n";
k++;
);
theString = Substr( theString, 1 );
Eval(
Parse(
"dt2<<NEW column=""></NEW>
La única compensación que obtienen los miembros de la Comunidad por ayudar a otros miembros es la satisfacción que proviene de que los miembros a los que han ayudado se vuelvan más autosuficientes.Cortar y pegar el código de trabajo de otra persona no es una buena manera de volverse autosuficiente.
Re: Cómo crear una fórmula de columna usando un nombre de columna de una lista@txnelson Gracias. Muy apreciado.
¿Se puede hacer de forma dinámica? Tengo casos donde hay más de 2 grupos. Escribir una función de ejecución de cadena separada sería tedioso.
He adjuntado una tabla de referencia a continuación
Re: Cómo crear una fórmula de columna usando un nombre de columna de una lista@txnelson Las reglas son similares al ejemplo anterior.
Cree cada grupo de columnas por separado con una fórmula que sume los contenedores respectivos.
Quiero crear una columna en la tabla Resumen de contenedores blandos con la adición de todos los contenedores de nombres de columnas en la fórmula.
Por ejemplo: Cree una columna de grupo IDD Currents con fórmula (Sum( Column ("52", "42","49") )),
Crear columna de grupo abierto con fórmula (Suma( Columna ("39", "41","43") ))
y de la misma manera para los grupos de etiquetas restantes en la columna de la etiqueta Resumen de rendimiento
Cómo crear una fórmula de columna usando un nombre de columna de una listaHola,
Quiero crear una nueva columna en la segunda tabla JMP con una fórmula que simplemente suma las Columnas contenidas en la lista (en el código que he asignado el nombre de la columna a contenedores
Por ejemplo: la lista contiene nombres de columna "39","41","43". Quiero crear una nueva columna en la tabla Resumen de papelera blanda con la adición de todo esto en la fórmula
No puedo entender qué estoy haciendo mal al pasar de la lista {""} de columnas a la referencia a las columnas.
Cualquier ayuda es muy apreciada.
Aquí está el código que he probado
Names Default To Here( 1 );
Clear Globals();
dt = Data Table( "Untitled 910" );
dt2 = Data Table( "Soft Bin Summary" );
Try( For Each Row( :Yield SummaryBins = Word( 1, :Yield SummaryBins, "[]" ) ) );
grouplist = dt:Yield SummaryBins << get values;
For( i = N Items( grouplist ), i >= 1, i--,
If( grouplist[i] == "",
Remove From( grouplist, i, 1 ),
));
binss = {}; /// list contaiting bin value
For( i = 1, i <= N Items( grouplist ), i++,
If( Contains( grouplist[i], " " ),
Insert Into( binss, grouplist[i] )
)
);
adad = Words( binss[1], " " );
F = Eval Expr( Sum( Expr( adad ) ) );
/// Something doesn't seem to right in the below loop
For( i = 1, i <= N Items( binss ), i++,
dt2 << New Column( binss[i], "Numeric", "Continuous", Format( "Percent", 12, 2 ), Formula( Name Expr( F ) ) ););
Gracias,
Jacobo
Modelado Estadístico AvanzadoExploración y visualización de datosLa personalización en masaIngeniería de Calidad y Procesos