값 라벨For 루프와 If 문을 사용하여 여러 열의 값을 변경하려고 합니다. 불행히도 새로운 열은 제대로 생성되지만 두 번째 열의 값은 어떤 이유에서인지 첫 번째 열에도 복사됩니다. 무엇을 놓치고 있는 걸까요?
New Table( "Untitled 11",
Add Rows( 4 ),
New Column( "Column_1",
Character,
"Nominal",
Set Values( {"A1000", "A2000", "A3000", "A4000"} )
),
New Column( "Column_2",
Character,
"Nominal",
Set Values( {"B5000", "B6000", "B7000", "B8000"} )
)
);
OldColNames = { "Column_1", "Column_2" };
NewColNames = { "New_Column_1", "New_Column_2" };
nCols = N Items( OldColNames );
For( i = 1, i <= nCols, i++,
oldcol = OldColNames[i];
newcol = NewColNames[i];
New Column( newcol,
Character,
"Nominal",
Formula(
If(
"A10" <= Left( As Column( oldcol ), 3 ) <= "A19", "A-One",
"A20" <= Left( As Column( oldcol ), 3 ) <= "A29", "A-Two",
"A30" <= Left( As Column( oldcol ), 3 ) <= "A39", "A-Three",
"A40" <= Left( As Column( oldcol ), 3 ) <= "A49", "A-Four",
"B50" <= Left( As Column( oldcol ), 3 ) <= "B59", "B-Five",
"B60" <= Left( As Column( oldcol ), 3 ) <= "B69", "B-Six",
"B70" <= Left( As Column( oldcol ), 3 ) <= "B79", "B-Seven",
"B80" <= Left( As Column( oldcol ), 3 ) <= "B89", "B-Eight",
)
)
);
);감사해요!
고급 통계 모델링소비자 및 시장 조사데이터 접근데이터 블렌딩 및 정리품질 및 공정 엔지니어링Re: 값 레이블이름 때문이다. 올드콜 수식 내부는 수식이 실행될 때만 평가(해석)되며, 수식은 열이 생성될 때 실행되지 않고 나중에 실행됩니다.나중에 두 열 모두 다음을 참조합니다. 올드콜 , 이제 동일한 열로 확인됩니다.
이 문제를 해결하려면 다음과 같이 열을 생성할 때 이전 col 값을 설정해야 합니다.
New Table( "Untitled 11",
Add Rows( 4 ),
New Column( "Column_1",
Character,
"Nominal",
Set Values( {"A1000", "A2000", "A3000", "A4000"} )
),
New Column( "Column_2",
Character,
"Nominal",
Set Values( {"B5000", "B6000", "B7000", "B8000"} )
)
);
OldColNames = { "Column_1", "Column_2" };
NewColNames = { "New_Column_1", "New_Column_2" };
nCols = N Items( OldColNames );
For( i = 1, i <= nCols, i++,
oldcol = OldColNames[i];
newcol = NewColNames[i];
Eval( Eval Expr(
New Column( newcol,
Character,
"Nominal",
Formula(
As Constant( col = As Name( Expr( old col ) ) );
If(
"A10" <= Left( col, 3 ) <= "A19", "A-One",
"A20" <= Left( col, 3 ) <= "A29", "A-Two",
"A30" <= Left( col, 3 ) <= "A39", "A-Three",
"A40" <= Left( col, 3 ) <= "A49", "A-Four",
"B50" <= Left( col, 3 ) <= "B59", "B-Five",
"B60" <= Left( col, 3 ) <= "B69", "B-Six",
"B70" <= Left( col, 3 ) <= "B79", "B-Seven",
"B80" <= Left( col, 3 ) <= "B89", "B-Eight",
)
)
);
) );
);여기서 내가 사용하고 있는 평가( 평가 Expr( ... 특급(변수) ... ) ) 스크립트의 일부를 미리 평가하는 구성 및 상수로() 첫 번째 행에 대해서만 평가하고 다음 모든 행에 대해 해당 값을 유지합니다(이름 조회 시간을 방지하여 수식 속도를 높일 수 있음)
Re: 값 레이블훌륭한!정말 고맙습니다.