안녕하세요, JSL 초보자 여러분. 아래 형식의 데이터 테이블이 있습니다. 열은 BIN, TOF(오류 유무), RWED(용접 재작업), MP(조립자)입니다.최종 결과를 출력하지 않고 1단계 후에 종료됩니다(아래 설명).어떻게 해결할 수 있나요?
| 큰 상자 | TOF | RWED | 국회의원 |
| 1001 | 와이 | 1 | 31A |
| 1001 | N | | 31A |
| 1001 | N | | 31A |
| 1001 | 와이 | 1 | 31A |
| 1002 | N | | 31A |
| 1002 | N | | 31B |
| 1002 | N | | 31B |
| 1002 | 와이 | 1 | 31B |
| 1003 | 와이 | 1 | 31A |
| 1003 | 와이 | 1 | 31B |
나는 해당 BIN의 총 수 또는 조립된 장치의 백분율에 따른 RWED인 최종 결과를 얻기 위해 다음 단계를 시도하고 있습니다.
1단계: 요약 테이블 만들기
| 큰 상자 | N 행 | 국회의원 | 합계(RWED) |
| 1001 | 4 | 31A | 2 |
| 1002 | 1 | 31A | 0 |
| 1002 | 삼 | 31B | 1 |
| 1003 | 1 | 31A | 1 |
| 1003 | 1 | 31B | 1 |
2단계: 요약 테이블 "Sum(RWED)"의 이름을 "TRWED"로 바꾸고 수식 "RWRat"가 포함된 열을 추가하여 BIN별 MP별로 결합된 총 단위 수에 따른 재용접 비율을 계산합니다.
| 큰 상자 | N 행 | 국회의원 | TRWED | RWRat |
| 1001 | 4 | 31A | 2 | 50 |
| 1002 | 1 | 31A | 0 | 0 |
| 1002 | 삼 | 31B | 1 | 33.33 |
| 1003 | 1 | 31A | 1 | 100 |
| 1003 | 1 | 31B | 1 | 100 |
3단계: 테이블을 최종 출력으로 전치하고 테이블 저장
| 큰 상자 | 31A | 31B |
| 1001 | 50 | 0 |
| 1002 | 0 | 33.33 |
| 1003 | 100 | 100 |
나는 다음 스크립트를 작성했습니다
dt1 = Open( "smdt.csv" ); //Open the data table
Wait( 2 );
//Summary table creation
dt2 << Summary( Group( :BIN, :MP ), Sum( :RWED ), Freq( "None" ), Weight( "None" ), );
Column( dt2, "sum(:RWED)" ) << set name( "TRWED" );//renaming the summary table column
dt2 << New Column( "RWRat", Numeric, Continuous, Formula( Round( (:Name( "TRWED)" ) / :N Rows) * 100, 2 ) ) );//add new column to with formula
//Transpose the final results
Transpose( columns( :Name( "Sum(RWED)" ) ), By( :BIN ), Label( :MP ), Output Table( "RWRT By (BIN, MP)" ) );
dt2 << Save( "Stb.csv" );//Save the table
@txnelson 빠른 응답에 감사드립니다.
RWRat 열을 생성한 후 계산된 값이 열에 추가되지 않는 것을 확인했습니다. "N 행" 열 때문인가요? 요약 테이블을 작성하면 "N 행" 열이 생성됩니다. 수식에서 해당 열을 재사용하려면 해당 열의 이름을 바꿔야 합니까?
최종 출력 테이블 형식은 정확하지만 테이블 값이 비어 있습니다.
또한 나는 TXN_WW==BIN입니다. 그것은 내 실수였습니다.
names default to here(1);
dt1 = New Table( "Example",
Add Rows( 10 ),
New Script(
"Source",
Data Table( "Untitled 31" ) << Split(
Split By( :Column 2 ),
Split( :Column 1 ),
Sort by Column Property
)
),
New Column( "Bin",
Character,
"Nominal",
Set Values(
{"1001", "1001", "1001", "1001", "1002", "1002", "1002", "1002", "1003",
"1003"}
)
),
New Column( "TOF",
Character,
"Nominal",
Set Values( {"Y", "N", "N", "Y", "N", "N", "N", "Y", "Y", "Y"} )
),
New Column( "RWED",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Selected,
Set Values( [1, ., ., 1, ., ., ., 1, 1, 1] )
),
New Column( "MP",
Character,
"Nominal",
Set Values(
{"31A", "31A", "31A", "31A", "31A", "31B", "31B", "31B", "31A", "31B"}
)
)
);
dt2 = dt1 << Summary(
Group( :Bin, :MP ),
Sum( :RWED ),
Freq( "None" ),
Weight( "None" )
);
dt2:Name("Sum(RWED)") << set name( "TRWED" );
dt2 << NewColumn("RWRat", Numeric, Continuous, Formula(Round(:TRWED / :N Rows* 100, 2) ));
dt3 = dt2 << Transpose(
columns( :RWRat ),
By( :Bin ),
Label( :MP ),
Output Table( "\!"RWRT By (TXN_WW, MP" )
);