변수 열 목록을 문자열로 평가하고 새 열 수식에 삽입열 이름의 문자열인 변수를 만들었습니다.이것은 FOR 루프 안에 있으므로 각 루프마다 변경됩니다.
여기에 시연을 위한 샘플 테이블이 있습니다. 실제로 내 테이블은 이상한 이름을 가진 약 400개의 열입니다.그룹화해야 하는 열을 그룹화하고 최대값을 보고하려고 합니다. 99.9%의 시간 동안 그룹화할 각 'like' 열에 대해 행당 하나의 값만 있습니다.
| 열1 | 열2 | 콜3 |
| 22 | | |
| | 22 | |
| | | 32 |
| | 32 | |
| 1 | | |
| | | 56 |
| | 34 | |
이 첫 번째 부분은 변수 열 목록을 생성하는 루프입니다.여기에 모든 코드가 없지만 여기에 요약이 있습니다.이것은 작동하므로 이에 대한 토론을 중단하고 싶지 않습니다.
VarCols = functional code here and the output is a string with this format: {"col1", "col2", "col3"}
그런 다음 내 코드는 'VarName'(루프의 다른 부분에 정의됨)이라는 새 열을 만든 다음 VarCols에 있는 열의 최대값을 보고하는 수식을 삽입해야 합니다.그러나 나는 그것을 평가할 수 없습니다.이 방법을 잘못하고 있습니까?
DT << New Column(VarName, Numeric, "Continuous", formula(Maximum(columns(eval(VarCols)))));
혼란을 피하기 위해 변수 열 이름을 삽입했지만 특정 오류는 다음과 같습니다.
열 VarName 수식이 중단됨
이름 미해결: 열 1번 행: 2 작업: 열, 열( Eval( VarCols) ) /*###*/
수식 평가 오류가 무시되었습니다.
Re: 변수 열 목록을 문자열로 평가하고 새 열 수식에 삽입"TheExpr" 값을 입력하십시오.
Re: 변수 열 목록을 문자열로 평가하고 새 열 수식에 삽입오랜 팬. 질문에 대한 답변을 얻기 위해 실제로 게시해야 하는 것은 처음입니다.
이것은 훌륭합니다. 방금 내 코드에서 동일한 지점에 도달했습니다. 다음 단계는 이 문자열을 새 열의 함수에 삽입하는 것입니다.
dt << New Column( "MinValue", numeric, continuous, Formula( min(Eval( Parse( TheExpr)))));
그러나 그것은 나를 위해 작동하지 않습니다. 도움을 주시면 감사하겠습니다.
무시하세요. 오늘 밤 늦게 뇌가 작동하지 않았습니다...
Re: 변수 열 목록을 문자열로 평가하고 새 열 수식에 삽입감사합니다 @txnelson
Re: 변수 열 목록을 문자열로 평가하고 새 열 수식에 삽입다른 커뮤니티 회원이 더 효율적인 코드를 가지고 있을 수 있지만 귀하의 요청을 코딩하는 방법은 다음과 같습니다.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
VarCols = {"NPN1", "PNP2", "NPN2"};
VarName = "NewCol";
// Create the JSL required to generate the new column
theExpr = "DT << New Column(VarName, Numeric, Continuous, formula(Maximum(:" || VarCols[1];
For( i = 2, i <= N Items( VarCols ), i++,
theExpr = theExpr || ",:" || VarCols[i]
);
theExpr = theExpr || ")));";
// Run the generated JSL
Eval( Parse( theExpr ) );