질문 테이블 병합, JSL을 사용하여 여러 열 데이터를 하나의 열로 병합하는 방법은 무엇입니까?
하나의 테이블이있는 경우 일부 열 이름은 매우 유사합니다. 예를 들어 하나의 열 이름은 WR 689700 @ WFI * HH 씨 56XY Z, 다른 열 이름은 689799 @ WFI * HH 56XY W, 한 열의 셀 내용은 실제 값을 표시하고 다른 열의 동일한 행은 "NA"를 표시합니다. 문제는 아래 그림과 같이 새 열의 셀 내용을 병합하고 "NA"를 제거하는 방법입니다. 테이블에 20 개 이상의 열이 있으므로 JSL을 사용하여 유사한 열을 판단하고 그룹화 한 다음 셀 내용을 새 열에 병합해야합니다.
감사
| | | 오리지널 테이블 | | | | 테이블 병합 후 |
| ID_1 | ID_2 | WR @ 689700 @ WFI * HHC 56XYZ | WR @ 689799 @ WFI * HH 56XYZ W | WR @ 780990 @ UW * FFY 78XYZ | WR @ 780666 @ UW * FFY 78XYZ | -> | ID_1 | ID_2 | WR @ 689700 @ WFI * HHC 56XYZ | WR @ 689799 @ WFI * HH 56XYZ W | WR @ 780990 @ UW * FFY 78XYZ | WR @ 780666 @ UW * FFY 78XYZ | WR @ 1 | WR @ 2 |
| 22164 | 115 | 72_22P | NA | SS_YY | NA | 22164 | 115 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 25335 | 33 | 72_22P | NA | NA | 88_CC | 25335 | 33 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 24870 | 872 | 72_22P | NA | SS_YY | NA | 24870 | 872 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 24861 | 591 | NA | 72_88P | SS_YY | NA | 24861 | 591 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 12928 | 274 | 72_22P | NA | SS_YY | NA | 12928 | 274 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 20927 | 818 | NA | 72_88P | SS_YY | NA | 20927 | 818 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 22167 | 14 | 72_22P | NA | SS_YY | NA | 22167 | 14 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 12930 | 120 | 72_22P | NA | NA | 88_CC | 12930 | 120 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 28447 | 155 | 72_22P | NA | SS_YY | NA | 28447 | 155 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 33380 | 138 | NA | 72_88P | NA | 88_CC | 33380 | 138 | NA | 72_88P | NA | 88_CC | 72_88P | 88_CC |
| 18186 | 769 | 72_22P | NA | NA | 88_CC | 18186 | 769 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 27557 | 91 | NA | 72_88P | NA | 88_CC | 27557 | 91 | NA | 72_88P | NA | 88_CC | 72_88P | 88_CC |
| 14863 | 116 | 72_22P | NA | NA | 88_CC | 14863 | 116 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 29928 | 204 | NA | 72_88P | SS_YY | NA | 29928 | 204 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 15809 | 70 | 72_22P | NA | NA | 88_CC | 15809 | 70 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 21701 | 269 | 72_22P | NA | SS_YY | NA | 21701 | 269 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 27937 | 110 | NA | 72_88P | SS_YY | NA | 27937 | 110 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 20136 | 454 | 72_22P | NA | SS_YY | NA | 20136 | 454 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 27934 | 866 | NA | 72_88P | NA | 88_CC | 27934 | 866 | NA | 72_88P | NA | 88_CC | 72_88P | 88_CC |
| 18186 | 759 | 72_22P | NA | SS_YY | NA | 18186 | 759 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 27937 | 106 | NA | 72_88P | SS_YY | NA | 27937 | 106 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 11921 | 170 | 72_22P | NA | SS_YY | NA | 11921 | 170 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 15809 | 275 | 72_22P | NA | SS_YY | NA | 15809 | 275 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 26314 | 222 | 72_22P | NA | NA | 88_CC | 26314 | 222 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 25323 | 274 | 72_22P | NA | SS_YY | NA | 25323 | 274 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
| 21684 | 305 | 72_22P | NA | NA | 88_CC | 21684 | 305 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 25931 | 453 | NA | 72_88P | SS_YY | NA | 25931 | 453 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 19928 | 462 | NA | 72_88P | SS_YY | NA | 19928 | 462 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 16925 | 12 | NA | 72_88P | NA | 88_CC | 16925 | 12 | NA | 72_88P | NA | 88_CC | 72_88P | 88_CC |
| 15927 | 8 | NA | 72_88P | SS_YY | NA | 15927 | 8 | NA | 72_88P | SS_YY | NA | 72_88P | SS_YY |
| 12930 | 35 | 72_22P | NA | NA | 88_CC | 12930 | 35 | 72_22P | NA | NA | 88_CC | 72_22P | 88_CC |
| 21702 | 178 | 72_22P | NA | SS_YY | NA | 21702 | 178 | 72_22P | NA | SS_YY | NA | 72_22P | SS_YY |
이를 수행하는 한 가지 방법이 있습니다.제자리에서 값을 변경하므로 테이블의 원본 사본을 저장했는지 확인하십시오.전체 테이블을 수정하기 위해 수행해야 할 작업은 열 이름 (compList1 & compList2)의 두 비교 목록을 만드는 것입니다.
Names Default To Here( 1 );
dt = Current Data Table();
// Create the lists of the columns to be compaired
// compList1[1] will be compired with compList2[1] etc.
compList1 = {"WR@689700@WFI*HHC 56XYZ", "WR@780990@UW*FFY 78XYZ"};
compList2 = {"WR@689799@WFI*HH 56XYZ W", "WR@780666@UW*FFY 78XYZ"};
// Loop across the columns, finding which rows to be changed and
// then loop across those rows and change them
For( i = 1, i <= N Items( compList1 ), i++,
// Find which rows to change
theRows = dt << get rows where( As Column( dt, compList1[i] ) == "NA" & As Column( dt, compList2[i] ) != "NA" );
// Change the rows
For( k = 1, k <= N Rows( theRows ), k++,
Column( dt, compList1[i] )[theRows[k]] = Column( dt, compList2[i] )[theRows[k]]
);
);
// Delete the duplicate columns
dt << delete columns( compList2 );