루프를 사용하여 일련의 열을 다시 코딩하십시오.여보세요,
나는 종종 멀티 펀치 (multi-punch) 데이터를 별도의 컬럼으로 "폭발"시켰고, 옵션 1 = 1, 옵션 2 = 2 등의 긍정적 인 반응을 보였다. 이 코드를 바이너리로 다시 코딩해야하며이 코드를 재현 가능한 스크립트로 만들고 싶습니다. 나는 다음 스크립트로 올바른 길을 가고 있다고 생각하지만, "subscript"객체는 액세스 할 때 또는 "Subscript"를 평가할 때 "subscriptable {1}이 아닙니다"라는 오류 메시지가 나타납니다. 샘플 데이터 세트를 첨부했습니다. 미리 감사드립니다.
dt = Current Data Table();
lstColNames = {"14_1","14_2","14_3","14_4","14_5","14_6","14_7","14_8","14_9","14_10","14_11","14_12","14_13"};
For Each Row( For( i = 1, i <= N Items( lstColNames ), i++, If( lstColNames[i][]== i, lstColNames[i][] = 1 ) ) );
Re : 일련의 열을 루프로 다시 코딩하십시오.감사! 나는 이것을 사용하여 프로젝트를위한 스크립트를 재현 할 수 있었다. 나는 원조에 감사한다!
Re : 일련의 열을 루프로 다시 코딩하십시오.For( i = 1, i <= 13, i++,
For () 루프를 줄이면됩니다.
Re : 일련의 열을 루프로 다시 코딩하십시오.고마워, 텍사스, 완벽하게 게시 된 샘플을 위해 작동합니다. 더 많은 열을 포함하는 더 큰 데이터 집합에있는 경우이를 14_1 ~ 14_13 열로 어떻게 제한합니까? 그래서 특정 목록을 사용하려고했습니다.
Re : 일련의 열을 루프로 다시 코딩하십시오.이것이 당신이 원하는 것인지 확인하십시오.
Names Default To Here( 1 );
dt = Current Data Table();
lstColNames = dt << get column names( string, nominal );
For( i = 1, i <= N Items( lstColNames ), i++,
theRows = dt << get rows where( As Column( dt, lstColNames[i] ) >= 1 );
If( N Rows( theRows ) > 0,
Column( dt, lstColNames[i] )[theRows] = 1
);
theRows = dt << get rows where( Is Missing( As Column( dt, lstColNames[i] ) ) == 1 );
If( N Rows( theRows ) > 0,
Column( dt, lstColNames[i] )[theRows] = 0
);
Column( dt, lstColNames[i] ) << delete property( "Value Labels" );