¿Necesitas ayuda con la fórmula de columna?Hola,
Quiero convertir este bucle en una fórmula de columna equivalente.
Names Default To Here( 1 );
dt = Current Data Table();
// Assuming Column B is column 2
testColumn = Column( dt, 1 );
llCol = dt << New Column( "LL Limit_7.5", Numeric );
ulCol = dt << New Column( "UL Limit_7.5", Numeric );
// Loop through each row starting from row 20
For( i = 20, i <= N Rows( dt ), i++,
data = testColumn[1 :: i]; // Get values from row 20 to the current row
q1 = Quantile( 0.25, data ); // 1st Quartile
q3 = Quantile( 0.75, data ); // 3rd Quartile
// Factor value is 6
factorValue = 7.5;
// Calculate ll and ul
llx = q1 - (q3 - q1) * (factorValue - 0.675) / 1.35;
ulx = q3 + (q3 - q1) * (factorValue - 0.675) / 1.35;
// Set the calculated values in the new columns
llCol[i] = llx;
ulCol[i] = ulx;
);
Lo intenté pero no parece correcto. ¿Algún consejo?
newColExpr = Expr(
llCol << Set Formula(
If( Row() >= 20,
Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) ) - (Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) )
-Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) )) * (Expr( factorValue ) - 0.675) / 1.35,
.
)
);
ulCol << Set Formula(
If( Row() >= 20,
Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) ) + (Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) )
-Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) )) * (Expr( factorValue ) - 0.675) / 1.35,
.
)
);
);
Eval( Eval Expr( newColExpr ) );
Automatización y scriptingRe: Necesito ayuda con la fórmula de columna¿Podrías explicarme lo que deseas hacer?
Re: Necesito ayuda con la fórmula de columnaCálculo de los límites de PAT
Re: Necesito ayuda con la fórmula de columnaPuedes hacer algo como esto, pero no estoy seguro de si es la mejor manera de hacerlo.
Names Default To Here(1);
dt = Open("$DOWNLOADS/data_table.jmp");
dt << New Column("Low", Numeric, Continuous, Formula(
As Constant(
factorValue = 7.5;
);
If(Row() < 20,
.
,
m = :Data[1::Row()];
q1 = Quantile(0.25, m);
q3 = Quantile(0.75, m);
q1 - (q3 - q1) * (factorValue - 0.675) / 1.35;
);
));
dt << New Column("High", Numeric, Continuous, Formula(
As Constant(
factorValue = 7.5;
);
If(Row() < 20,
.
,
m = :Data[1::Row()];
q1 = Quantile(0.25, m);
q3 = Quantile(0.75, m);
q3 + (q3 - q1) * (factorValue - 0.675) / 1.35;
);
));
Re: Necesito ayuda con la fórmula de columna
Interesante, para Col Quantiles, primero es la columna , luego el Quantile.
Además de eso, Col Quantile tomará todas las filas, no las filas 1::currentRow
-> dará como resultado un valor constante.

newColExpr = Expr(
new column("llCol" ,Formula(
If( Row() >= 20,
Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) ) - (Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) )
-Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) )) * (Expr( factorValue ) - 0.675) / 1.35,
.
)
));
new column("ulCol" , Formula(
If( Row() >= 20,
Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) ) + (Col Quantile( 0.75, Expr( TestColumn( 1, Row() ) ) )
-Col Quantile( 0.25, Expr( TestColumn( 1, Row() ) ) )) * (Expr( factorValue ) - 0.675) / 1.35,
.
)
));
);
Eval(Eval Expr( newColExpr )) ;