Transposer de WIDE à LONG et une question de formuleSalut - deux questions quelque peu liées
J'ai utilisé SPLIT pour transformer un fichier long en un fichier large, mais j'ai une situation légèrement plus compliquée où je veux EMPILER / transposer un fichier large en un fichier long.
J'ai un ensemble de données avec un identifiant de sujet unique, puis plusieurs centaines de colonnes / variables. Les noms des variables sont exactement les mêmes à l'exception que l'année 1 se termine par «2», que l'année 2 se termine par «3», etc. 2,3,4) et les noms de variables ne sont là qu'une seule fois sans numéro à la fin?
En relation mais en abordant ce qui précède d'une manière différente, dans un tel ensemble de données, existe-t-il un moyen de créer une formule dans JMP pour l'indiquer pour les XXX centaines de colonnes, pour supprimer le # (par exemple, 1, 2) à la fin du nom de la colonne / variable? Évidemment, je pourrais le faire manuellement, mais cela prendrait une éternité.
Merci beaucoup!
Tableau de donnéesAutreScriptingRe: Transposer de WIDE à LONG et une question de formuleVoici un script qui générera une table de données empilée avec 3 colonnes

Voici un script qui supprimera le nombre numérique de la fin des colonnes dans une table de données.N'oubliez pas que lorsque vous renommez des colonnes, si le résultat final est un nom de colonne identique au nom d'une colonne précédente, JMP ajoutera une valeur numérique pour que le nouveau nom de colonne devienne un nom unique.
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;:, -_)("
)
)
)
);Re: Transposer de WIDE à LONG et une question de formuleJ'apprécie vraiment ta réponse.Si ma mémoire est bonne, vous m'avez également aidé avec une question l'année dernière.
Malheureusement, je ne suis pas averti avec le script JMP, il suffit de pointer et de cliquer.Et même si je pouvais le comprendre, puisque j'ai beaucoup de variables, je devrais exécuter ce code pour chacune, n'est-ce pas?