Script: subconjunto de tabla de datos con filtros de cuadro combinadoHola,
He estado tratando de escribir un script para crear un subconjunto de una tabla de datos más grande. El nuevo subconjunto debe contener un número de ID de sujeto, DOB y un rango de fechas seleccionadas. Escribí una secuencia de comandos que solicita el número de ID, la fecha de inicio y la fecha de finalización en tres cuadros de texto diferentes. (Incluido a continuación, y está lejos de ser perfecto). Sin embargo, me gustaría tener algunos menús desplegables en la ventana emergente para mostrar qué números de ID están disponibles para la tabla de datos actual y las fechas adjuntas para ese tema. Siguiendo el ejemplo de aquí, http://www.jmp.com/support/notes/54/614.html , He intentado trabajar con Combo Boxes, pero parece que no puedo hacerlo bien.
El problema es hacer que el segundo / tercer menú desplegable reaccione de acuerdo con la selección de ID #. Cosas que he notado: el resumen y la matriz asociativa ayudan a reducir las fechas duplicadas y los espacios en blanco, y las fechas no están en el "m / d / a preferido".
Cualquier ayuda apreciada!
dt = Current Data Table();
Column(dt, "Coll Date") << Data Type("Numeric", Informat("m/d/y"), Format("m/d/y") );
Column(dt, "Coll Date") << Modeling Type("Continuous");
Column(dt, "Coll Date") << Order(Ascending);
nw = New Window( "Subject ID by Date Range.",
<<MODAL>= Char( startDate ) & Format( :Coll Date, "m/d/y" ) <= Char( endDate )
);
subdt = dt << Subset(
Columns( :Patient ID1, :DOB, :Coll Date ),
Output Table Name( "subset" ),
);
subdt<< sort(by(:Coll Date), Replace Table);</MODAL>UNA
Re: Script: Subconjunto de tabla de datos con filtros de cuadro combinadoEl dispositivo de selección, lista de selección frente a control deslizante se basa en el tipo de modelo para la columna. Si solo cambia el tipo de modelado a "Ordinal", la selección se convertirá en una lista de selección.
dt=open("$SAMPLE_DATA\Movies.jmp");
dt:year << set modeling type(ordinal);
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
O bien, puede convertir la columna de Año en un valor real de Fecha de JMP y colocar un formato de fecha en la columna, y verá una versión mucho mejor del control deslizante del código.
dt=open("$SAMPLE_DATA\Movies.jmp");
for each row(
dt:year= date mdy(1,1,year));
dt:year << format("m/d/y");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);Re: Script: Subconjunto de tabla de datos con filtros de cuadro combinadoOh wow, mucho más simple!
Siguiendo los datos de la muestra, seleccionar el tipo de película es genial, sería posible obtener algo similar para la columna Año. ¿Tal vez el formato del tipo para obtener valores discretos en lugar de un año hasta el tercer decimal?
Re: Script: Subconjunto de tabla de datos con filtros de cuadro combinadoCiertamente, puede crear su propio cuadro de diálogo único, con los requisitos que especificó, pero la forma más sencilla de hacer lo que desea es crear un filtro de datos en una secuencia de comandos, y luego usar la capacidad de selección incorporada, el usuario puede simplemente ir al triángulo rojo y seleccione "Mostrar subconjunto" y la tabla de datos que escribió sobre se creará
dt=open("$SAMPLE_DATA\Movies.jmp");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
Re: Script: Subconjunto de tabla de datos con filtros de cuadro combinadoAquí es donde estoy parado en el uso de Combo Boxes, es un gran lío ...
dt = Tabla de datos actuales ();
Columna (dt, "Fecha de recopilación") << Tipo de datos ("Carácter", Informat ("d / m / y"), Formato ("m / d / y"));
Columna (dt, "Fecha de recopilación") << Tipo de modelado ("Continuo");
Columna (dt, "Fecha de recopilación") << Orden (Ascendente);
Resumir (a = Por (: ID paciente1));
Insertar en (a, "", 1);
// Resumir (b = Por (: Fecha de recopilación));
date = Associative Array ((: Coll Date << Get Values)) << Get Keys;
Nueva ventana ("Ejemplo",
<< modal,
Cuadro de lista H (
Cuadro de panel ("Seleccionar identificación de paciente:",
cb1 = cuadro combinado (
una,
<< SetFunction (
Función ({este},
selection = this << Get Selected ();
r = // Para cada fila (Seleccionado (Estado de la fila () =: ID del paciente == Num (selección)));
dt << Get Rows Where (: ID del paciente == Num (selección));
Resumir (b = Por (: Fecha de recopilación [r]));
b << Tipo de datos ("Carácter", Informat ("d / m / y"), Formato ("m / d / y"));
// b = Array asociativo ((: Fecha de recopilación [r] << Obtener valores)) << Obtener claves;
// startDate = Associative Array ((date [r] << Get Values)) << Get Keys;
cb2 << Establecer elementos (fecha [r]);
)
)
)
)
Cuadro de panel ("Seleccione una fecha de inicio:",
cb2 = cuadro combinado (
segundo,
<< SetFunction (
Función ({este},
one = this << Get Selected ();
g = dt << Get Rows Where (: Coll Date> one);
Resumir (c = Por (: Fecha de recopilación [g]));
endDate =: Coll Date [g];
cb3 << Establecer elementos (endDate);
)
)
)
)
Cuadro de panel ("Seleccionar una fecha de finalización:",
cb3 = cuadro combinado (
segundo,
<< SetFunction (
Función ({este},
dos = esto << Obtener seleccionado ()))
)
)
)
);
Por cada fila(
Seleccionado (Estado de fila ()) =: ID paciente1 == Carácter (Selección) y Formato (: Fecha de recopilación, "m / d / y")> = uno
& Formato (: Fecha de recopilación, "m / d / y") <= dos
);
subdt = dt << Subconjunto (Columnas (: ID de paciente1,: Fecha de nacimiento,: Fecha de recopilación), Nombre de la tabla de salida ("Subconjunto"),);
subdt << Sort (By (: Coll Date), Replace Table);Re: Script: subconjunto de tabla de datos con filtros de cuadro combinado¿Cómo se escribe el script que muestra la parte de la tabla de subconjuntos?