Cuadro de control automatizado con múltiples columnas de fecha y columnas de datos.Hola,
Estoy tratando de automatizar una forma de crear gráficos de control a partir de una tabla con el formato siguiente:
| Motor | 314-Fecha | 314-Parámetro 1 | 314-parametro 2 | 314-parámetro ect. | 213-parametro 1 | 213- fecha | 241-parametro 1 | 241-parametro 2 | 241-Fecha |
| # | fecha | # | # | # | # | fecha | # | # | fecha |
| # | fecha | # | # | # | # | fecha | # | # | fecha |
Tengo este código que me acerca a lo que quiero.
Rcols = dt << GetColumnNames( Continuous, String );
nw = New Window( "Control Charts", myVLB = V List Box() );
For( i = 1, i <= N Items( Rcols ), i++,
cc = Control Chart(
Sample Label( Column( dt, Rcols[1] ) ),
KSigma( 3 ),
Chart Col( Column( dt, Rcols[i] ), Levey Jennings )
);
myVLB << Append( Report( cc ) );
cc << close window;
);
Sin embargo, el problema ahora es tratar de encontrar una manera de hacer que la etiqueta de muestra sea la fecha correcta para el ID de los parámetros. No hay cantidades iguales de parámetros para cada ID, por lo que la tabla no es uniforme de esa manera, lo que también hace que esto sea un poco más difícil.
¡Gracias!
Re: Automatizar el gráfico de control con múltiples columnas de fecha y columnas de datosSignifica que el elemento que está intentando insertar no es una Lista. En este código:
a=3;
insert into(c,a)
obtendrá el error, ya que la variable "c" no se ha definido como una lista.
Re: Automatizar el gráfico de control con múltiples columnas de fecha y columnas de datosHola Jim, creo que esto está muy cerca de lo que necesito. Estoy recibiendo un error que es:
Solo se puede insertar en un valor L en el acceso o evaluación de 'Insertar en'
¿Podrías poner algo de luz en lo que esto significa?
Gracias
Re: Automatizar el gráfico de control con múltiples columnas de fecha y columnas de datosJim, publicado antes de que terminara mi solución ... otra vez. Mi enfoque es casi el mismo, pero me gusta usar una función creada para trabajar con listas que reduce mucho código. La función que llamo Lfunc (lista, expr), ejecuta la expresión en cada elemento de la lista. [Este ha sido un elemento de la lista de deseos de JMP desde hace mucho tiempo].
Por lo tanto, la tercera línea en la siguiente JSL devuelve [2, 7, 10] para el ejemplo que proporcionó. Para cada una de esas columnas, obtengo el código y la línea que comienza con "params =" devuelve todas las columnas (que no contienen la fecha) que comienzan con ese código.
Aparte de un enfoque alternativo y volver a desear una función integrada de JMP algo como Lfunc (), noté que estás creando gráficos de control inactivos y tal vez ese sea tu objetivo. Si desea gráficos interactivos "en vivo", para resaltar y desplazar la ayuda, consulte el código comentado en el archivo adjunto FindColumns_CC.jsl
dt=current data table();
Rcols = dt << GetColumnNames(String ); //get all coumns so the code can use the column number
dateCols = Loc(Matrix(Lfunc(RCols, Expr(Contains(Lowercase(x),"date"))))); //2,7,10
nw = New Window( "Control Charts", myVLB = V List Box() );
for(i=1, i<=nrow(dateCols), i++,
code = Trim(word(1, Rcols[dateCols[i]], "-"));
params = Loc(Matrix(Lfunc(RCols, Expr(StartsWith(x,code) & !Contains(lowercase(x),"date")) )));
Re: Automatizar el gráfico de control con múltiples columnas de fecha y columnas de datosCreo que entiendo tu pregunta. He tomado el enfoque, para encontrar todos los grupos en los datos, y para crear una lista separada de columnas que están en cada una de las listas. Luego, los grupos se reparten en bucle y cada una de las columnas de esa lista se procesa, no tengo una tabla de datos para probar mi solución, por lo que creo que el código debe usarse como una buena guía de cómo resolver el problema. problema, pero no debe considerarse una solución definitiva
Rcols = dt << GetColumnNames( Continuous, String );
// Process the columns into group and separate lists for each group
groupList = {};
For( i = 2, i <= N Items( Rcols ), i++,
theGroup = Word( 1, Rcols[i], "-" );
// Check if the group has been seen before
If( Contains( groupList, theGroup ) > 0,
// If this is a new group, create a list to hold the column names
Eval( Parse( "Group_" || theGroup || " = {};" ) );
// Add the group name to the groupList
Insert Into( groupList, theGroup );
// Add the current parameter to the new group list
Insert Into( "Group_" || theGroup, Rcols[i] );
,
// If this isn't a new group list, then add it to the
// already existing group list
Insert Into( "Group_" || theGroup, Rcols[i] )
);
);
// Create the display window
nw = New Window( "Control Charts", myVLB = V List Box() );
// Loop across the groups
For( group = 1, group <= N Items( groupList ), group++,
// Set a standard list name to have the values of the current Group_list
Eval( Parse( "tempRcols = Group_" || groupList[group] || ";" ) );
// Generate the charts
For( i = 2, i <= N Items( tempRcols ), i++,
cc = Control Chart(
Sample Label( Column( dt, tempRcols[1] ) ),
KSigma( 3 ),
Chart Col( Column( dt, tempRcols[i] ), Levey Jennings )
);
myVLB << Append( Report( cc ) );
cc << close window;
);
);