Hola, dos preguntas algo relacionadas
He usado SPLIT para transformar un archivo largo en un archivo ancho, pero tengo una situación un poco más complicada en la que quiero APILAR / transponer un archivo ancho a un archivo largo.
Tengo un conjunto de datos con un ID de sujeto único y luego varios cientos de columnas / variables. Los nombres de las variables son exactamente los mismos con la excepción de que el año 1 termina en '2', el año 2 termina en '3', etc. ¿Existe una forma relativamente simple de hacer que este archivo sea largo, de modo que haya una variable de tiempo (1, 2, 3, 4) y los nombres de las variables solo están allí una vez sin ningún número al final?
Relacionado, pero acercándose a lo anterior de una manera diferente, en un conjunto de datos de este tipo, ¿hay alguna manera de crear una fórmula en JMP para indicarlo para todas las XXX cien columnas, para eliminar el # (por ejemplo, 1, 2) del final de la nombre de columna / variable? Obviamente, podría hacerlo manualmente, pero me llevaría una eternidad.
¡Muchas gracias!
Aquí hay un script que generará una tabla de datos apilada con 3 columnas

Aquí hay un script que eliminará el número numérico del final de las columnas en una tabla de datos.Recuerde, al cambiar el nombre de las columnas, si el resultado final es un nombre de columna que es el mismo que el nombre de una columna anterior, JMP agregará un valor numérico para que el nombre de la nueva columna sea único.
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;:, -_)("
)
)
)
);