Suchen und Ersetzen von SpaltenüberschriftenHi,
Ich kann den Namen der Spaltenüberschrift mit dem genauen Namen ersetzen :height << Set Name( "test" );
Wenn ich eine Textliste habe, die ich durch "" ersetzen möchte.
Wie gehe ich damit vor?
„Name“ „Uhrzeit“ „Geschlecht“ „Größe abc Gewicht“ „Gewicht xyz“ „12 Größentest“
KATIE 12 W 59 95 59
LOUISE 12 F 61 123 61
Endgültige Ausgabe:
„Name“ „Uhrzeit“ „Geschlecht“ „abc“ „xyz“ „12 Test“
Names Default To Here( 1 );
dt = Open( "C:/JSL/BigClass.jmp" );
headerList = dt << get column names( string );
//:height << Set Name( "test" );
For( i = 1, i <= N Items( headerList ), i++,
If( (headerList[i] == "height" || headerList[i] == "weight"), //trying to find any column header has height or weight and replace with ""
Column( dt, colList[i] ) << set name( " " ) //above are just two examples, maybe put it in list and loop?
)
);
SkripterstellungBetreff: Spaltenüberschrift suchen und ersetzenHallo Sam,
Es scheint, dass das Problem mit der direkten Umbenennung der Spalte in der zweiten Schleife (j) zusammenhängt, in der Sie noch Ersetzungen vornehmen.
Eine mögliche Lösung (siehe unten) besteht darin, die Liste der Überschriften (hl) zu ändern und die Spalte dann umzubenennen, nachdem alle Änderungen vorgenommen wurden:
Names Default To Here( 1 );
dt = Open( "C:\Program Files\SAS\JMP\14\Samples\Data\Big Class.jmp" );
hl = dt << get column names( string );
sr = List();
sr[1] = "height"; //
sr[2] = "e"; // Order of replacement strings is critical
sr[3] = "a"; //
For( i = 1, i <= N Items( hl ), i++,
For (j = 1, j <= N Items (sr), j++,
If (contains (hl [i], sr [j]),
txt = substitute (hl [i], sr [j], "x"); // Just for clarity: the expression could be wrapped into the next
Substitute into (hl, hl [i], txt); // Hold all the changes into the hl list
)
);
Column (dt , i ) << set name (hl [i]); // Renames column only after all changes have been made
);
Ich hoffe, es hilft.
Am besten,
TS
Betreff: Spaltenüberschrift suchen und ersetzenIch habe versucht, die Liste im Voraus zu definieren und eine doppelt verschachtelte Schleife auszuführen. Es ersetzt nur auf ZeichenfolgeErsetzen[3].
headerList = dt << get column names( string );
stringReplace = List();
stringReplace[1] = "height";
stringReplace[2] = "e";
stringReplace[3] = "a";
For( i = 1, i <= N Items( headerList ), i++,
For( j = 1, j <= N Items( stringReplace ), j++,
Column( dt, i ) << set name( Substitute(headerList[i], stringReplace[j], "" ) )
);
);
Betreff: Spaltenüberschrift suchen und ersetzenHallo Sam,
Ich habe 2 Probleme in Ihrem Skript gefunden:
- Sie haben das verkettete "||" verwendet Code zur Darstellung Ihrer „Oder“-Anweisung (sollte „|“ sein)
- JMP lässt nicht zu, dass Spalten als " " bezeichnet werden.
Außerdem ist es normalerweise schneller und einfacher, die Spalte nach Nummer aufzurufen, anstatt die Liste der Spaltennamen zu durchlaufen
Also, hier ist, was ich herausgefunden habe:
Names Default To Here( 1 );
dt = Open( "C:\Program Files\SAS\JMP\14\Samples\Data\Big Class.jmp" );
headerList = dt << get column names( string );
For( i = 1, i <= N Items( headerList ), i++,
If( (headerList[i] == "height" | headerList[i] == "weight"), //Fixed the "Or" statement
Column( dt, i ) << set name(substitute (headerList [i], "e", "x")) //Used the substitute function as an example, you can replace any string with ""?
)
);