Tengo dificultades para reformatear los datos de una tabla en JMP. Espero transformar una tabla de un formato de 'clasificación' a un 'formato de puntuación semanal', por ejemplo
De:
Semana 1st_Name 1st_Score 2nd_name 2nd_Score 3er_Name 3rd_Score
1 David 5 Tim 2 Raquel 1
2 Tim 7 Alexis 4 Rachel 2
3 Tina 6 Raquel 5 David 2
A:
Semana David Tim Rachel Alexis Tina
1 5 2 1 0 0
2 0 7 2 4 0
3 2 0 5 0 6
Puedo ordenar las columnas de manera diferente en la extracción de datos original si eso facilita el reformateo.
Si alguien puede ayudar con esto, estaría muy agradecido.
Esto es fácil de hacer.
Interactivamente tú:
- Apile los nombres y las puntuaciones que se especifican en el cuadro de diálogo Apilar para usar la Pila de varias series
- Luego divide la mesa apilada
- Dividir por datos de columna
- Especifique la columna Data2 como la columna dividida
- Luego deberá revisar cada columna y seleccionar y cambiar los valores faltantes a 0
Aquí hay un script que ilustra la solución basada en sus datos de ejemplo
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 3 ),
New Column( "Week", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3] ) ),
New Column( "1st_Name", Character, "Nominal", Set Values( {"David", "Tim", "Tina"} ) ),
New Column( "1st_Score", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [5, 7, 6] ) ),
New Column( "2nd_Name", Character, "Nominal", Set Values( {"Tim", "Alexis", "Rachel"} ) ),
New Column( "2nd_Score", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [2, 4, 5] ) ),
New Column( "3rd_Name", Character, "Nominal", Set Values( {"Rachel", "Rachel", "David"} ) ),
New Column( "3rd_Score", Numeric, "Continuous", Format( "Best", 12 ), Set Values( [1, 2, 3] ) )
);
dtStack = dt << Stack(
columns(
:"1st_Name"n,
:"1st_Score"n,
:"2nd_Name"n,
:"2nd_Score"n,
:"3rd_Name"n,
:"3rd_Score"n
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Number of Series( 2 ),
Output Table( "Stacked Data" )
);
dtFinal = dtStack << Split(
Split By( :Data ),
Split( :Data 2 ),
Remaining Columns( Drop All ),
Sort by Column Property
);
For( i=1, i<=N Cols(dtFinal), i++,
missing = dtFinal << get rows where( isMissing(as column( i )));
try(column(i)[missing]=0);
);