여러 열을 다시 코딩하는 jsl 스크립트여러분 모두에게,
다음 스크립트(예제 데이터 테이블과 함께 첨부 파일에도 있음)를 사용하여 여러 열을 다시 코딩하려고 합니다. 몇 가지 변경을 시도했지만 작동하지 않습니다. 열의 값은 다시 코딩되는 대신 사라집니다.
도움을 주시면 감사하겠습니다.
많은 감사,
마르첼로
dt3 = Current Data Table();
n3 = dt3 << Get Column Names();
Show( n3 );
lstColNames_n3 = dt3 << Get Column Names();
Show( lstColNames_n3 );
Show( lstCols_n3 );
lstCols_n3 = {};
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
colName = lstColNames_n3[i];
col = Column( dt3, i );
Insert Into( lstCols_n3, col );
);
Show( lstCols_n3 );
For Each Row(
For( i = 1, i <= N Items( lstColNames_n3 ), i++,
As Column( lstColNames_n3[i] ) = Match( As Column( lstColNames_n3[i] ),
"1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"
)
)
);
스크립팅Re: 여러 열을 다시 코딩하는 jsl 스크립트감사!
Re: 여러 열을 다시 코딩하는 jsl 스크립트한 가지 해결 방법은 다시 코딩하려는 열을 기반으로 수식을 사용하여 새 열을 만드는 것입니다.
그런 다음 원본 열을 삭제하십시오.
Re: 여러 열을 다시 코딩하는 jsl 스크립트감사합니다!
Re: 여러 열을 다시 코딩하는 jsl 스크립트다음은 JSL로 작성된 Recode 기능을 사용하는 솔루션입니다. 행 단위로 처리하는 것보다 훨씬 빠릅니다.
Names Default To Here( 1 );
dmdt = current data table();
nc = dmdt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
col = Column( dt, nc[i] );
colname = col << getname();
Eval(
Parse(
Eval Insert(
"\[
dmdt << Recode Column(
:Name("^colname^"),
{Map Value( _rcOrig,
{ "1", "too low",
"2", "too low",
"3", "right",
"4", "too high",
"5", "too high"},
Unmatched( _rcNow ) )},
Update Properties( 1 ),
Target Column( :Name("^colname^") )
);
]\"
)
)
);
);
Re: 여러 열을 다시 코딩하는 jsl 스크립트대단히 감사합니다. 연관 배열이 있는 코드가 완벽하게 작동했습니다.
추가하여 다른 옵션도 시도했습니다.
Match(As Column( lstColNames_n3[i])[Row()],
하지만 작동하지 않았습니다.
그러나 나는 내 문제를 해결했습니다.
감사합니다.
Re: 여러 열을 다시 코딩하는 jsl 스크립트이전 답변을 수정했습니다. 녹음에 도움이 될 것입니다.Re: 여러 열을 다시 코딩하는 jsl 스크립트값을 다시 코딩해야 합니다. 감사.
Re: 여러 열을 다시 코딩하는 jsl 스크립트값을 다시 코딩해야 합니까 아니면 열 속성 값 레이블을 사용할 수 있습니까(이렇게 하면 원래 데이터가 손실되지 않음). 예: JSL 스크립트로 여러 열 재코드화
편집하다:
그리고 제자리에서 다시 코딩해야 하는 경우 여러 가지 방법으로 수행할 수 있습니다(저는 연관 배열을 사용합니다).
Names Default To Here(1);
dt3 = current data Table ();
n3 = dt3 << Get Column Names(string);
show(n3);
//create associative array to use matching keys to values
matchAa = Associative Array(
{"1","2","3","4","5"},
{"too low","too low","right","too high","too high"}
);
show(matchAa);
//loop over column names
For(i = 1, i <= N Items(n3), i++,
//refer to column and use set each value to update values
Column(dt3, n3[i]) << Set Each Value(
matchAa[AsColumn(n3[i])[Row()]]
);
);
그리고 귀하의 솔루션에 대해 Match 함수의 값을 참조하는 방법에 문제가 있다고 생각하며 Matching에 대한 단일 값을 얻으려면 [Row()]를 추가해야 합니다.
Match(As Column( lstColNames_n3[i])[Row()],
편집2:
첨부 파일로 전체 예제 스크립트 추가