저는 공정 기록에서 검색된 화학 제조 공정 데이터(온도, 압력, 흐름, 구성 등)를 사용하여 작업합니다. 각 변수에는 LP1LCA0311과 같은 장비(태그) 이름과 F-301 Level과 같은 설명자(용어집)가 모두 있습니다. Excel에서 JMP로 자동 내보낼 때 용어집이 열 이름으로 사용됩니다. 용어집은 사람이 만든 것이므로 일반적으로 일관성이 없습니다. 종종 용어집 대신 별칭을 사용하는 것이 합리적입니다. 기능적으로 F-301은 저압 집진기입니다. 별칭 = LVL.LP.DC.
우리는 프로세스를 모니터링하기 위해 대시보드를 구축하고 있습니다. 예는 다음과 같습니다.
- 31개의 측정 열과 타임스탬프가 있는 6개의 반응기
- 열 이름을 용어집에서 RX#.LVL과 같은 표준 별칭 형식으로 바꿔야 합니다. RX#.F.피드; 등.
- 표준 형식을 사용하면 쉽게 쌓을 수 있습니다. LEFT() 또는 WORD() 함수를 사용하는 Reactor라는 열을 만들 수 있습니다. RIGHT() 함수를 사용하여 데이터 열의 이름을 바꿉니다.
나는 다음을 원한다:
두 번째 데이터 테이블(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]] );
);
);