가변 열 이름을 사용하여 수식 열을 만드는 JSL안녕,
열 이름과 상수에 대한 변수를 사용하는 스크립트를 통해 새 수식 열을 만들어야 합니다.
Expr, Eval, Parse, Eval Insert의 다양한 조합을 시도했지만 소용이 없었습니다.
샘플을 참조하세요.
감사해요
row = 11;
col = "foo";
for (i = 1, i <= ncols(dt), i++,
dt << New Column( "ratio " || char(i), numeric,
formula(( column(col) - column(col)[row] ) / (Col Max(col) - Col Min(col))));
);
자동화 및 스크립팅Re: 가변 열 이름을 사용하여 수식 열을 생성하는 JSL사용
for (i = 1, i <= ncols(dt), i++,
For() 루프 내에 새 열을 추가하면 루프가 끝나지 않습니다.ncols(dt)는 각 루프마다 1씩 증가하므로 i는 결코 ncols(dt)에 도달하지 않습니다.
New Column() 함수의 Formula() 요소는 열에 대해 생성될 때 내용을 구문 분석하지 않습니다.각 행에 대해 수식이 실행될 때만 내용을 구문 분석합니다.따라서 열 및 행 참조는 해당 값이 변경될 때 문제를 일으킬 수 있습니다.이를 처리하는 적절한 방법은 수식이 생성되기 전에 열과 행의 실제 값을 수식에 대체하는 것입니다.
Names Default To Here( 1 );
dt =
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
Open( "$SAMPLE_DATA/Big Class.jmp" );
row = 11;
col = "height";
stop = n cols(dt);
For( i=1, i<= stop, i++,
Eval(
Substitute(
Expr(
dt << New Column( "ratio " || Char( i ),
numeric,
formula( (As Column( _col_ ) - As Column( _col_ )[_row_]) / (Col Max( As Column( _col_ ) ) - Col Min( As Column( _col_ ) )) )
)
),
Expr( _col_ ), col,
Expr( _row_ ), row
)
);
);Re: 가변 열 이름을 사용하여 수식 열을 생성하는 JSL정말 감사합니다!