Hallo - zwei etwas verwandte Fragen
Ich habe SPLIT verwendet, um eine lange Datei in eine breite Datei umzuwandeln, aber ich habe eine etwas kompliziertere Situation, in der ich eine breite Datei in eine lange Datei stapeln / transponieren möchte.
Ich habe einen Datensatz mit einer eindeutigen Betreff-ID und dann mehrere hundert Spalten / Variablen. Die Variablennamen sind exakt gleich, mit der Ausnahme, dass Jahr 1 mit '2' endet, Jahr 2 mit '3' endet usw. Gibt es eine relativ einfache Möglichkeit, diese Datei lang zu machen, sodass es eine Zeitvariable gibt (1, 2,3,4) und die Variablennamen sind dort nur einmal ohne Nummer am Ende?
In einem solchen Datensatz gibt es eine Möglichkeit, eine Formel in JMP zu erstellen, um sie für alle XXX hundert Spalten anzugeben und das # (z. B. 1, 2) am Ende des zu entfernen Spalten- / Variablenname? Natürlich könnte ich das manuell machen, aber es würde ewig dauern.
Vielen Dank!
Hier ist ein Skript, das eine gestapelte Datentabelle mit 3 Spalten generiert

Hier ist ein Skript, das die numerische Nummer vom Ende der Spalten in einer Datentabelle entfernt.Denken Sie daran, dass JMP beim Umbenennen von Spalten, wenn das Endergebnis ein Spaltenname ist, der mit dem Namen einer vorherigen Spalte identisch ist, einen numerischen Wert hinzufügt, um den neuen Spaltennamen zu einem eindeutigen Namen zu machen
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;:, -_)("
)
)
)
);Ich freue mich sehr über Ihre Antwort.Wenn das Gedächtnis dient, haben Sie mir letztes Jahr auch bei einer Frage geholfen.
Leider bin ich nicht mit JMP-Skripten vertraut, sondern zeige und klicke nur.Und selbst wenn ich es herausfinden könnte, da ich viele Variablen habe, müsste ich diesen Code für jeden ausführen, nicht wahr?