Ich arbeite mit Prozessdaten der chemischen Fertigung (denken Sie an Temperatur, Druck, Durchfluss, Zusammensetzung usw.), die von einem Prozesshistoriker abgerufen werden. Jede Variable hat sowohl einen Gerätenamen (Tag) wie: LP1LCA0311 als auch einen Deskriptor (Glossar) wie: F-301 Level. Beim automatischen Export von Excel nach JMP wird das Glossar als Spaltenname verwendet. Das Glossar wird von Menschen erstellt und ist daher normalerweise nicht konsistent. Oft ist es sinnvoll, einen Alias anstelle des Glossars zu verwenden: Funktionell ist F-301 der Niederdruck-Staubsammler; alias = LVL.LP.DC.
Wir erstellen Dashboards, um unsere Prozesse zu überwachen. Hier ist ein Beispiel:
- sechs Reaktoren mit 31 Messspalten + Zeitstempel
- Sie müssen die Spalten vom Glossar in das Standard-Alias-Format umbenennen, z. B.: RX#.LVL; RX#.F.Feed; usw.
- Das Standardformat ermöglicht ein einfaches Stapeln: Es kann eine Spalte namens Reactor erstellt werden, die die Funktionen LEFT() oder WORD() verwendet. Benennen Sie die Datenspalte mit der Funktion RIGHT() um.
Ich möchte:
Verwenden Sie eine zweite Datentabelle (DT2), um die Spalten in der ersten Datentabelle (DT1) umzubenennen.
DT2 enthält 2 Spalten: Old.Name = DT1-Spaltennamen; New.Name =manuell eingegebene neue Spaltennamen (Alias)
Das Skript sollte Old.Name annehmen und in die neue Spalte property = „OldName“ in DT1 einfügen
Das Skript benennt dann die DT1-Spalten mit DT2 New.Name um
Der folgende Codeausschnitt von Jerry Cooper zeigt, wie der Schritt „Spalteneigenschaft“ ausgeführt wird:
// Script to take units from column name and assign to column property
// received from Jerry Cooper of SAS 03-Mar-2014
// Data table should have column names of form: Name|units
// Script assumes that units are after "|"
// Easy to set up header row in Excel to concatenate name and units
Names Default To Here( 1 );
dt = Current Data Table();
mycols = dt << Get Column Names( string );
For( i = 1, i <= N Items( mycols ), i++,
If( Contains( mycols[i], "|" ),
myunits = Substr( mycols[i], Contains( mycols[i], "|", -1 ) + 1 );
newname = Substr( mycols[i], 1, Contains( mycols[i], "|", -1 ) - 1 );
Column( i ) << Set Name( newname );
Column( i ) << Set Property( "Units", eval(myunits) );
)
);
Wie würde ich die Schritte zum Umbenennen der Spalten in DT1 skripten?
Hat jemand eine bessere Möglichkeit, das zu erreichen, was ich will?
Wow! das hat auf einmal geklappt! Danke schön!!!
Probieren Sie es aus und sehen Sie, ob es das ist, was Sie wollen
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt2 = New Table( "Lookup",
Add Rows( 1 ),
New Column( "Old Name", Character, "Nominal", Set Values( {"Sex"} ) ),
New Column( "New Name", Character, "Nominal", Set Values( {"Gender"} ) )
);
ColList = dt << get column names( string );
For( i = 1, i <= N Items( ColList ), i++,
FoundName = dt2 << get rows where( Uppercase( :OldName ) == Uppercase( ColList[i] ) );
If( N Rows( FoundName ) > 0,
Column( dt, ColList[i] ) << set property( "Old Name", Eval( ColList[i] ) );
Column( dt, ColList[i] ) << set name( dt2:New Name[FoundName[1]] );
);
);