テーブルマージについての質問、JSLを使用して複数の列データを1つの列にマージする方法は?
テーブルが1つある場合、一部の列名は非常に似ています。たとえば、1つの列名は次のようになります。 WR 689700 @ WFI * HH C 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 |
これを行う1つの方法があります。値が変更されるため、テーブルの元のコピーが保存されていることを確認してください。これを取得してテーブル全体を修正するために必要なことは、列名の2つの比較リスト(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 );