¿Subconjuntos de promedios basados en identificadores en múltiples columnas?Necesito un script JSL para tomar promedios de múltiples columnas de datos y crear subconjuntos de ellos en una tabla de datos separada. Sin embargo, necesito que los promedios se agrupen por múltiples identificadores categóricos. Por ejemplo, para la tabla de datos a continuación, necesitaría los promedios de SubjectA Group X y Subject A Group y, como líneas separadas, como se muestra en la segunda tabla de ejemplo. Algo similar a esta pregunta anterior. ¿Cómo modificaría el script para incluir promedios para múltiples columnas? Si necesito hacer las columnas de promedio en la tabla de datos de origen y luego crear subconjuntos por separado, eso también funcionaría.
Tabla de fuentes de ejemplo:
| Sujeto | Grupo | Datos A | Datos B |
| A | x | 5 | 2 |
| A | y | 0 | 2 |
| A | x | 5 | 0 |
| B | z | 5 | 2 |
| B | x | 5 | 2 |
| B | x | 5 | 2 |
Ejemplo de tabla de salida:
| Sujeto | Grupo | Datos A Promedio | Datos B Promedio |
| A | x | 5 | 1 |
| A | y | 0 | 2 |
| B | x | 5 | 2 |
| B | z | 5 | 2 |
Estoy usando JMP Pro 18 en Windows.
Automatización y scriptingCombinación y limpieza de datosVentanasRe: ¿Subconjuntos de promedios basados en identificadores en múltiples columnas?Hola @Mcc99 ,
Hay un par de formas diferentes de hacer esto, pero una de las más fáciles podría ser usando la plataforma Tabulate.
Usando la tabla de datos de muestra que proporcionaste, puedes hacerlo con solo un poco de JSL:
Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
La salida correspondiente de la plataforma Tabulate se ve así:

Creo que es exactamente lo que buscas. Por supuesto, puedes agregar más estadísticas para incluir o realizar la tabulación de otras maneras, pero creo que esto es lo que quieres. Luego, puedes hacer clic en Listo y, con el menú desplegable con el botón rojo, puedes seleccionar Convertir en tabla de datos y luego obtener tu tabla de datos de la plataforma (también puedes usar JSL para hacer todo esto por ti).
Parece que la publicación anterior a la que hizo referencia utilizó una fórmula de columna, que era la otra forma que yo habría sugerido, pero ya se respondió allí, por lo que siempre puede revisar esa publicación con más detalle si esa es la forma que desea seguir. Pero realmente creo que la plataforma Tabulate es lo que necesita, y puede experimentar con las diferentes columnas de agrupación y demás para ver cómo cambian los datos.
¡Espero que esto ayude!
DS
Re: ¿Subconjuntos de promedios basados en identificadores en múltiples columnas?¡Gracias! Ni siquiera pensé en usar la función de tabulación, pero hace que mi script sea mucho más claro que la fórmula de columna. Sin embargo, tengo problemas para guardar la tabla de tabulación como una nueva tabla de datos. Agregué el script a continuación, después del script de tabulación anterior. Aunque se abre la ventana de tabulación, no se abre la nueva tabla de datos.
<< Make Into Data Table(Outputtable("Average data"));Re: ¿Subconjuntos de promedios basados en identificadores en múltiples columnas?@Mcc99
Otra opción que podría considerar es usar Tabla > Resumen. El panel Vista previa le ayuda a asegurarse de que tenga el resultado correcto, especialmente cuando agrupa por varias columnas.
Tablas > Resumen:

Guión fuente:
Data Table( "Data Table Name" ) << Summary(
Group( :Subject, :Group ),
Mean( :Data A ),
Mean( :Data B ),
Freq( "None" ),
Weight( "None" ),
output table name( "Summary of Data Table Name by Subject, Group" )
);
Re: ¿Subconjuntos de promedios basados en identificadores en múltiples columnas?Hola @Mcc99 ,
¿Está seguro de que está haciendo referencia a sus objetos correctamente en JSL? Si utiliza el código siguiente (suponiendo que está trabajando con la estructura de la tabla de datos como en su ejemplo), generará la tabla de datos tabulada correcta mediante Tabulate, luego la convertirá en una tabla de datos con el nombre dado y también cerrará la ventana Tabulate.
Names Default To Here( 1 );
dt = Current Data Table();
dttab = dt << Tabulate(
Add Table(
Column Table( Analysis Columns( :Data A, :Data B ), Statistics( Mean ) ),
Row Table( Grouping Columns( :Subject, :Group ) )
)
);
dttab << Make Into Data Table( OutputTable( "Average Data" ) );
dttab <<CLOSE window=""></CLOSE>
<P>¡Espero que esto ayude!</P>
<P>DS</P>