<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola a todos,
Estoy buscando algunos consejos de usuarios de JMP más experimentados para el siguiente problema.
Con frecuencia necesito trabajar con tablas de datos que contienen hasta 4 filas por unidad. Sin embargo, algunos de los parámetros del sistema solo se registran para la primera entrada de una unidad individual, aunque también se aplican para las otras filas asociadas a esa unidad.
Para poder analizar y agrupar los datos, necesito que estos parámetros del sistema se completen para todas las filas de una unidad.
Como no tengo la oportunidad de alterar el registro de datos a la base de datos, debo ocuparme de esto después de la extracción de la base de datos antes de cualquier análisis.
Por lo tanto, he creado una solución como se muestra a continuación.
Proporciona el resultado deseado, pero es muy lento y en realidad no es factible para tablas de datos con más de 1000 filas.
dt = Tabla de datos actuales ();
dt << Ordenar (Por (: unidad), Ordenar (Ascendente), Reemplazar tabla);
: param_1 << Fórmula (para cada fila (: param_1 [fila () + 1] = (if (: unit [row ()] ==: unit [row () + 1],
: param_1 [fila ()],: param_1 [fila () + 1])),
)
Eval Formula
);
Estoy seguro de que hay una manera más eficiente y elegante de resolver este problema, pero debo admitir que mis habilidades son muy limitadas.
Aprecio cualquier entrada de usuarios más experimentados.
Gracias,
Lutz
Muchas gracias. Probará el código a primera hora en el cargo hoy.
Probé mi código contra una tabla de 40,000 filas y regresó en menos de un segundo.
Prueba este código. Se supone que tiene una tabla de dos columnas con una columna llamada Unidad y la otra llamada Param_1. No hice ninguna prueba de rendimiento, pero esto podría pasar rápidamente por tu mesa. Solo establece valores si es necesario.
dt = Nueva mesa ( "Ejemplo de unidad-param" ,
Añadir filas ( dieciséis ) ,
Nueva Columna ( "Unidad" ,
Personaje ,
Nominal ,
Establecer valores (
{ "una" , "una" , "una" , "una" , "segundo" , "segundo" , "segundo" , "segundo" , "do" , "do" , "do" , "do" , "re" , "re" ,
"re" , "re" }
)
) ,
Nueva Columna ( "Param_1" ,
Numérico ,
Continuo ,
Formato ( "Mejor" , 12 ) ,
Establecer valores ( El 32 , 32 , 32 , 32 , 25 , . , . , . , . , 14 , . , . , . , . , 13 , . ] )
)
) ;
// Ordenar por unidad y parámetro, de modo que si falta alguno, estén en las posiciones 2, 3, 4 de un conjunto
dt << Ordenar ( Por ( : unidad , : param_1 ) , Orden ( Ascendente , descendiendo ) , Reemplazar mesa ) ;
// Obtener los valores de la primera fila
old_unit = dt : unidad El 1 ] ;
viejo_param = dt : param_1 El 1 ] ;
para ( yo = 2 , yo <= las filas ( dt ) , yo ++,
una unidad = dt : unidad El yo ] ;
one_param = dt : param_1 El yo ] ;
Si ( una unidad == old_unit Y Está perdido ( one_param ) ,
dt : param_1 El yo ] = viejo_param ;
) ;
Si ( una unidad ! = old_unit ,
old_unit = una unidad ;
viejo_param = dt : param_1 El yo ] ;
) ;
) ;