私は、プロセス履歴担当者から取得した化学製造プロセス データ (温度、圧力、流量、組成など) を使用して作業しています。 各変数には、LP1LCA0311 のような機器 (タグ) 名と、F-301 レベルのような記述子 (用語集) の両方があります。 Excel から JMP に自動的にエクスポートされると、用語集が列名として使用されます。 用語集は人間によって作成されるため、通常は一貫性がありません。 多くの場合、用語集の代わりに別名を使用することが合理的です。機能的には、F-301 は低圧集塵機です。エイリアス = LVL.LP.DC。
私たちはプロセスを監視するためのダッシュボードを構築しています。 以下に例を示します。
- 31 の測定カラムを備えた 6 つのリアクター + タイムスタンプ
- 列の名前を用語集から RX#.LVL のような標準エイリアス形式に変更する必要があります。 RX#.F.フィード;等
- 標準形式では簡単にスタッキングできます。LEFT() 関数または WORD() 関数を使用する Reactor という名前の列を作成できます。 RIGHT() 関数を使用してデータ列の名前を変更します。
私はしたいと思います:
2 番目のデータ テーブル (DT2) を使用して、最初のデータ テーブル (DT1) の列の名前を変更します。
DT2 には 2 つの列が含まれます: Old.Name = DT1 列名。 New.Name = 手動で入力した新しい列名 (エイリアス)
スクリプトは Old.Name を取得し、DT1 の新しい列プロパティ = "OldName" に挿入する必要があります。
次に、スクリプトは DT2 New.Name を使用して DT1 列の名前を変更します。
Jerry Cooper による以下のコード スニペットは、列プロパティのステップを実行する方法を示しています。
// 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) );
)
);
DT1 の列の名前を変更する手順をスクリプト化するにはどうすればよいですか?
私が望むことを達成するためのより良い方法を持っている人はいますか?
おお!これは一発でうまくいきました! ありがとう!!!
これを試してみて、それがあなたが望むものであるかどうかを確認してください
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]] );
);
);