Estadísticas de resumen de todas las columnas numéricas por variable de agrupaciónTomé prestada una sección de otro JSL que alguien escribió hace un tiempo, pero lamentablemente ya no está en la empresa.
El JSL original crea gráficos de caja junto con una tabla con estadísticas de resumen de todas las columnas numéricas agrupando variables ("dividir").
Mi objetivo es obtener solo la tabla de resumen con estadísticas de resumen (media, desviación estándar) de todas las columnas numéricas por variable de agrupación.
Estoy usando JMP16.
La tabla de datos de entrada de muestra tiene 200 columnas numéricas, miles de filas con 5 valores únicos de variable de carácter de agrupación ("división").
La tabla de resumen de salida debe tener 200 filas con 5 columnas para la media y 5 columnas para la desviación estándar, donde cada una de las nuevas columnas (10) es la media/desviación estándar de cada columna numérica agrupada por cada valor único de la variable de carácter de agrupación ("división").
Gracias
Automatización y scriptingIngeniería de Calidad y ProcesosVentanasRe: Resumen de estadísticas de todas las columnas numéricas por variable de agrupaciónOlvidé publicar el error que me aparece con el JSL
Gracias

Re: Resumen de estadísticas de todas las columnas numéricas por variable de agrupaciónFalta en el código el JSL para una plataforma JMP que genera un análisis de varianza. La forma en que se utiliza la variable "vv" en el JSL que proporciona parece indicar la visualización de salida de un análisis unidireccional o un modelo de ajuste. No encuentro ninguna referencia de ese tipo en el código que proporcionaste.
He hecho una suposición y he añadido un método unidireccional al código. Genera un resultado, pero debes comprobar que es lo que quieres.
Input = Dialog( "Please Set Pvalue Limit", Pvalue_Threshold = EditNumber( 0.15 ), Button( "OK" ), Button( "Cancel" ) );
Pvaluelimit = Input[1];
vl = V List Box( Text Box( "Vmap Comparison" ) );
vl1 = V List Box();
vl2 = V List Box();
counter = 0;
i = 0;
k = 0;
j = 0;
w = 0;
WorkTable= current data table();
GetColName = WorkTable << get column names( Numeric );
Show( GetColName );
SumDT = New Table( "SummaryData" );
SumDT << New Column( "MDUT_Data", Character, Nominal, width( 30 ), values( GetColName ) );
SumDT << New Column( "P-Value", Numeric, Continuous );
nc1 = 1;
Temp = Data Table( WorkTable ) << Summary( Group( SPLIT ) );
nsplits = N Row( Temp );
SplitDef = Column( 1 ) << Get As Matrix;
Show( SplitDef, nsplits );
Close( Temp, no save );
For( i = 1, i <= nsplits, i++,
MeanCol = "Mean of " || Splitdef[i];
SumDT << New Column( MeanCol );
);
For( i = 1, i <= nsplits, i++,
SigmaCol = "Sigma of " || Splitdef[i];
SumDT << New Column( SigmaCol );
);
Current Data Table( SumDT );
For Each Row(
CurrentMDUT = Column( SumDT, "MDUT_Data" )[];
Current Data Table( WorkTable );
MeanCal = Summarize(
ExpCol = by( SPLIT ),
c = count,
meanD = Mean( Eval( CurrentMDUT ) ),
Sig = Std Dev( Eval( CurrentMDUT ) )
);
Current Data Table( SumDT );
For( w = nc1 + 2, w <= nsplits + nc1 + 1, w++,
BB = meanD[w - nc1 - 1];
Column( w )[] = BB;
CC = Sig[w - nc1 - 1];
Column( w + nsplits )[] = CC;
);
Current Data Table( WorkTable );
vx=worktable << Oneway( Y( column(SumDT:MDUT_Data[row()]) ), X( :Split ), Means( 1 ), Mean Diamonds( 1 ) );
vv=report(vx);
Pvalue = vv["Analysis of Variance"][Number Col Box( 5 )] << get( 1 );
Current Data Table( SumDT );
Column( nc1 + 1 )[] = Pvalue;
Current Data Table( WorkTable );
vv << close window;
If( Pvalue < Pvaluelimit,
counter = counter + 1;
layoutflag = Mod( counter, 2 );
If( layoutflag > 0,
vl1 << append( vv ),
vl2 << append( vv )
);
);
);
Re: Resumen de estadísticas de todas las columnas numéricas por variable de agrupaciónGracias por su rápida respuesta.
El nuevo JSL funciona y proporciona los resultados deseados, pero creo que es lento.
Estoy buscando utilizar este script para un conjunto de datos muy grande.
¿Existen opciones para mejorar el rendimiento? Gracias.
Re: Resumen de estadísticas de todas las columnas numéricas por variable de agrupaciónEl script se ejecutaría mucho más rápido si se utilizara la plataforma Response Screening para obtener los valores p. También sería más eficiente utilizar la plataforma Tabulate para generar las medias y las desviaciones estándar.
A continuación se muestra un ejemplo de cómo crear la tabla Resumen utilizando las sugerencias anteriores. He excluido la limitación de PValue, ya que no hacía nada en el script original.

Names Default To Here( 1 );
WorkTable = Current Data Table();
GetColName = WorkTable << get column names( Numeric );
// Generate the mean/std table
tab = WorkTable << (Tabulate(
Add Table(
Column Table( Grouping Columns( :split ), Statistics( Mean ) ),
Column Table( Grouping Columns( :split ), Statistics( Std Dev ) ),
Row Table( Analysis Columns( Eval( GetColName ) ) )
)
));
tab << Make Into Data Table;
tab << close window;
SumDT = Current Data Table();
SumDT << set name( "SummaryData" );
// Generate the p-values
rs = WorkTable << Response Screening(
Y( Eval( GetColName ) ),
X( :split ),
PValues Table on Launch( 1 )
);
ResponseDT = rs << get PValues;
Report( rs ) << close window;
ResponseDT << select columns( {"Y", "PValue"} );
ResponseDT << Invert Column Selection;
ResponseDT << delete columns;
ResponseDT:Y << set name( "Analysis Columns" );
SumDT << Update( With( ResponseDT ), Match Columns( :Analysis Columns = :Analysis Columns ) );
SumDT << Select columns( :PValue );
SumDT << Move Selected Columns( After( :Analysis Columns ) );
Close( ResponseDT, nosave );
Esto debería darle una ventaja para completar el guión y cumplir con sus especificaciones exactas.
Le sugiero que se tome el tiempo para leer la guía de scripts, que se encuentra en la Biblioteca de documentación de JMP, en el menú desplegable Ayuda.
Re: Resumen de estadísticas de todas las columnas numéricas por variable de agrupaciónComo sugerencia alternativa, puede generar una tabla apilada temporal y utilizar Tablas/Resumen en combinación con las opciones Grupo (columna original) y Subgrupo (dividir):

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
tmp = dt <<
Stack(
columns( Column Group( "Processes" ) )
);
tmp << Summary(
Group( :Label ),
Mean( :Processes ),
Std Dev( :Processes ),
Subgroup( :SITE ),
statistics column name format( "stat" )
);