Salve, due domande in qualche modo correlate
Ho usato SPLIT per trasformare un file lungo in un file largo, ma ho una situazione leggermente più complicata in cui voglio impilare / trasporre un file largo in un file lungo.
Ho un set di dati con un ID soggetto univoco e quindi diverse centinaia di colonne / variabili. I nomi delle variabili sono esattamente gli stessi con l'eccezione che l'anno 1 termina con "2", l'anno 2 termina con "3", ecc. Esiste un modo relativamente semplice per rendere questo file lungo, in modo che ci sia una variabile temporale (1, 2,3,4) e i nomi delle variabili sono presenti solo una volta senza numero alla fine?
Correlato ma avvicinandosi a quanto sopra in un modo diverso, in un set di dati di questo tipo, c'è un modo per creare una formula in JMP per dirlo per tutte le XXX cento colonne, per rimuovere il # (ad esempio, 1, 2) dalla fine del nome della colonna / variabile? Ovviamente potrei farlo manualmente ma ci vorrebbe un'eternità.
Grazie mille!
Ecco uno script che genererà una tabella di dati in pila con 3 colonne

Ecco uno script che rimuoverà il numero numerico dalla fine delle colonne in una tabella di dati.Ricorda, quando si rinominano le colonne, se il risultato finale è un nome di colonna uguale al nome di una colonna precedente, JMP aggiungerà un valore numerico per rendere il nome della nuova colonna un nome univoco
Names Default To Here( 1 );
dt = Current Data Table();
For( i = 2, i <= N Cols( dt ), i++,
if(
is missing(
Num(
word(
-1,
Lowercase( Column( dt, i ) << get name )
,
"abcdefghijklmnopqrstuvwxyz;:, -_)(")
)
) == 0,
Column( dt, i ) <<
set name(
substr(
Column(dt,i)<<GET name=""></GET>
Names Default To Here( 1 );
dt = new table( "Example",
add rows( 10 ),
New Column( "Year2", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year3", formula( Random Integer( 1, 100 ) ) ),
New Column( "Year4", formula( Random Integer( 1, 100 ) ) )
);
dtStack = Data Table( "Example" ) << Stack(
columns( :Year2, :Year3, :Year4 ),
Source Label Column( Column ),
Stacked Data Column( "Data" )
);
dtStack << New Column( "Year",
formula(
Num(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);
dtStack:Year << delete formula;
for each row(
:Column = substr(
:Column,
1,
Length( :Column ) - Length(
Word(
-1,
Lowercase( :Column ),
"abcdefghijklmnopqrstuvwxyz;:, -_)("
)
)
)
);Apprezzo molto la tua risposta.Se la memoria serve, l'anno scorso mi hai aiutato anche con una domanda.
Purtroppo non sono esperto con lo script JMP, solo punta e clicca.E anche se potessi capirlo, dato che ho molte variabili, dovrei eseguire quel codice per ognuna, no?