Unisci serie di dati jmp uguali per loop (scripting)Ho 100 set di dati strutturalmente identici. Tutti contengono un ID e una costante / campo, che contiene un nome di quel set di dati.
Concatenarli (formato "lungo") è facile.
Ora devo unirli nel formato "largo", è altrettanto facile?
Penso di usare quella costante come prefisso per ogni set di dati JMP, ma come potrei farlo funzionare in un ciclo.
Hai qualche suggerimento?
Grazie mille e cordiali saluti
Novizio
Ri: Unisci uguali set di dati jmp per loop (scripting)Non sono esattamente chiaro su come vuoi che sia la tua tabella dei dati di output, tuttavia, ecco un semplice esempio che unirà le tabelle di dati, simile alla struttura della tua descrizione
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( "A" || Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
current data table(dt);
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
dt2 << New Column("Table Name", character, set each value(dt2<<GET name=""></GET>Ri: Unisci uguali set di dati jmp per loop (scripting)Per qualunque motivo il mio post di venerdì pomeriggio sembrava perdersi ...
Questo è il prezzo che paghi quando lavori su un treno, o almeno così sembra.
Ho 100 set di dati, ognuno contiene una costante diversa:
per esempio
Dataset1
ID VALORE COSTANTE1 VALORE2
1 A 123 123
2 A 123 123
Dataset2
1 B 456 456
2 B 456 456
Dataset3
1 C 789 789
2 C 789 789
tutto quello che voglio è metterli in un unico set di dati con la seguente struttura:
A_ID A_CONSTANT A_VALUE1 A_VALUE2 B_ID B_CONSTANT B_VALUE1 B_VALUE2
1 A 123 123 1 B 456 456
2 A 123 123 2 B 456 456 ecc.,
Vedo due modi per arrivarci:
(1) aggiungere prima un prefisso a ogni singola colonna all'interno di ciascun set di dati e quindi unirli per ID o
(2) contatente prima tutti i set di dati e poi li trasponi / capovolgi / esegui il ciclo usando i livelli costanti come prefisso (tuttavia, ho scoperto che a JMP non piacciono i tipi di dati misti)
Qualche idea su come arrivarci ... ?
Qualsiasi aiuto è molto apprezzato
Novizio
Ri: Unisci uguali set di dati jmp per loop (scripting)Ecco una rielaborazione del mio script originale, tenendo conto delle nuove informazioni fornite.
Potresti anche voler esaminare l'utilizzo della tabella dei dati contatenata e l'utilizzo
Tabelle ==> Split
Può portarti molto vicino a quello che vuoi
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
constants = "ABCDEFGHIJKLMNOP";
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
Current Data Table( dt );
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
Column( dt2, 2 ) << set name( "Value1" );
dt2 << New Column( "Value2", formula( Floor( :Name( "Value1" ) + Random Integer( 5 ) ) ) );
dt2 << New Column( "Constant", character, set each value( Substr( constants, i - 1, 1 ) ) );
);
Wait( 0 );
Close( dt, nosave );
// Merge the tables together
// Get the table Names
tableList = {};
For( i = 1, i <= N Table(), i++,
Insert Into( tableList, Data Table( i ) << get name )
);
theConstant = Column( Data Table( tableList[N Items( tableList )] ), "Constant" )[1];
Data Table( tableList[N Items( tableList )] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[N Items( tableList )] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[N Items( tableList )] ), "Value2" ) << set name( theConstant || "_Value2" );
// Loop across the tables and using Update put them back together
For( i = N Items( tableList ) - 1, i >= 1, i--,
theConstant = Column( Data Table( tableList[i] ), "Constant" )[1];
Data Table( tableList[i] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[i] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[i] ), "Value2" ) << set name( theConstant || "_Value2" );
Data Table( tableList[N Items( tableList )] ) << Update( With( Data Table( tableList[i] ) ), Match Columns( :ID = :ID ) );
);
Ri: Unisci uguali set di dati jmp per loop (scripting)Non riesco a immaginare cosa rappresentino i set di dati o a cosa serva il set di dati combinato risultante. Tali informazioni potrebbero aiutarci a risolvere meglio il tuo problema. Se i set di dati sono identici nella struttura e contengono solo costanti ripetute, mi sembra che ci siano strutture di dati e metodi di dati più efficienti per il tuo problema.
Quindi cosa hai intenzione di fare in JMP con il set di dati combinato?
Ri: Unisci uguali set di dati jmp per loop (scripting)Ciao Tx,
Non ho accesso a JMP al momento (sto viaggiando) ma il risultato dovrebbe apparire così.
Ora, guardando la struttura da solo, penso che concatenare, quindi capovolgere / eseguire il ciclo della tabella contatenata possa essere un approccio semplice (gli ID non sono così importanti). Tuttavia, vorrei ancora sapere se ciò potesse essere risolto da un ciclo (macro) più semplice.
file1:
Valore costante ID
1 AB 123
2 AB 456
file2:
Valore costante ID
1 DEF 123
2 DEF 456
...
File100:
Valore costante ID
1 Z 123
2 Z 456
"Loop" di COSTANTE
Risultato desiderato
AB_ID AB_Constant AB_Value DEF_ID DEF_ Costante DEF_Value ... Z_ID Z_ Costante Z_Valore
1 AB 123 1 DEF 123 ... 1 Z 123
2 AB 456 2 DEF 456 ... 2 Z 123