중첩된 if 및 else 문에 필요한 도움나는 if else 문을 사용하여 특정 FS*/SS*를 CAT1 및 CAT2로 묶고 있습니다. CAT1/CAT2에 속하지 않는 나머지 모든 FS*/SS*는 CAT3으로 분류해야 합니다.
CAT3의 다른 부분을 작성하는 데 문제가 있습니다. 도움을 주시면 감사하겠습니다.
cdt = open("temp\data.csv");
cdt=current data table();
sum_lst2 = {};
sum_lst3 = {};
sum_lst4 = {};
col_lst2 = cdt << get column names( Numeric );
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If( Contains( {"SS008","SS009","SS010","SS015","SS053","FS9429","FS9792","FS9906","FS9908", "FS1302","FS1305","FS1308","FS1360","FS1373","FS2744","FS4621","FS4625","FS4630","FS4640","FS4681","FS4830"}, colname ) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450"),
Insert Into( sum_lst2, col_lst2[i] )
); ///Cat1//
If( Contains( {"SS098","SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" & colname <= "FS9799"),
Insert Into( sum_lst4, col_lst2[i] )
);//Cat2//
If( Contains( {"SS019","SS027","SS035","FS9901"}, colname ) | (colname >= "FS3451" & colname <= "FS3499"),
Insert Into( sum_lst3, col_lst2[i] )
);//Cat3
);| 안건 | FS0100 | FS0847 | FS0875 | FS0876 | FS0877 | FS1059 | FS1061 | FS1090 | FS1315 | FS1501 | FS1503 | FS1505 | FS1537 | FS1539 | FS1541 | FS1543 | FS1559 | FS1590 | FS1930 | FS1933 | FS2706 | FS2740 | FS2742 | FS2745 | FS3416 | FS3417 | FS3418 | FS3422 | FS3423 | FS3455 | FS3469 | FS3471 | FS3492 | FS3493 | FS5391 | FS9429 | FS9792 | FS9901 | FS9906 | SS001 | SS008 | SS010 | SS013 | SS015 | SS019 | SS027 | SS034 | SS053 | SS094 | SS097 | SS099 |
| 1 | 132 | 1 | | | | | | | | | | | | | | | | | 삼 | | | | | | | | | | | | | | | | | | | | 1 | 132 | 1 | | | | 삼 | | | | | | 1 |
| 2 | 600 | 2 | | | | | | | | | | | | | | | | | 7 | 2 | | 1 | 4 | | | | 5 | | | 1 | 4 | | | | | 1 | 1 | 1 | 2 | 600 | 2 | | 0 | | 9 | 5 | 10 | | 1 | 1 | 삼 |
| 삼 | 562 | | | | | 1 | | | | | | | | | | | | | 9 | | | 1 | 1 | | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | | | | 2 | 1 | 562 | | 1 | | | 9 | 2 | 11 | | | | 삼 |
| 4 | 527 | 2 | | 2 | 1 | | 2 | 1 | | 7 | | 2 | 4 | 삼 | 삼 | 2 | | 24 | 18 | 2 | 삼 | | | 1 | 2 | | 1 | | 1 | | 4 | | 1 | 1 | 1 | 삼 | | | 2 | 527 | 5 | 삼 | | 45 | 20 | 4 | 10 | 1 | 삼 | | 2 |
| 5 | 322 | | 1 | | | | | | 1 | | 2 | | | | | | 1 | | 7 | | | | 삼 | | | | | | | | | | | 2 | | | | | 삼 | 322 | 1 | | 1 | 삼 | 7 | 삼 | 2 | | | 0 | 삼 |
스크립팅Re: 중첩된 if 및 else 문에 도움이 필요합니다.아래와 같은 경우는 어떻습니까? If() 문 사이에 글루 연산자를 사용한 이후로 스크립트에서 "else" 문을 실제로 보지 못했습니다. 아래에서 내가 모든 If() 문을 중첩한 다음 마지막 else를 sum_lst4 목록에 삽입(Cat4 열 이름을 원하는 위치라고 가정)을 참조하십시오.
cdt = Current Data Table();
sum_lst2 = {};
sum_lst3 = {};
sum_lst4 = {};
col_lst2 = cdt << get column names( Numeric );
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If(
Contains(
{"SS008", "SS009", "SS010", "SS015", "SS053", "FS9429", "FS9792", "FS9906", "FS9908", "FS1302", "FS1305", "FS1308", "FS1360", "FS1373",
"FS2744", "FS4621", "FS4625", "FS4630", "FS4640", "FS4681", "FS4830"},
colname
) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450"),
Insert Into( sum_lst2, col_lst2[i] ), ///Cat1//
If( Contains( {"SS098", "SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" & colname <= "FS9799"),
Insert Into( sum_lst4, col_lst2[i] ), //Cat2//
If( Contains( {"SS019", "SS027", "SS035", "FS9901"}, colname ) | (colname >= "FS3451" & colname <= "FS3499"),
Insert Into( sum_lst3, col_lst2[i] ),
Insert Into( sum_lst4, col_lst2[i] )///final nested else statement for Cat4
);//Cat3
)
);
);Re: 중첩된 if 및 else 문에 도움이 필요합니다.내 질문에 실수로 잘못된 코드를 복사했습니다. 아래는 if/else 구현을 위해 작성한 코드이지만 CAT3 열에는 0만 있습니다. else 문의 배치에 문제가 있습니까?
반복해서 말씀드리자면, 저는 이것을 2개의 카테고리로 분류하려고 합니다. CAT1/2에 속하지 않는 값은 무엇이든 CAT3으로 분류해야 합니다.
cdt = open("temp\Rawdata.csv");
cdt = Current Data Table();
sum_lst2 = {};
sum_lst3 = {};
sum_lst4 = {};
col_lst2 = cdt << get column names( Numeric );
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If(
Contains(
{"SS008", "SS009", "SS010", "SS015", "SS053", "FS9429", "FS9792", "FS9906", "FS9908", "FS1302", "FS1305", "FS1308", "FS1360", "FS1373",
"FS2744", "FS4621", "FS4625", "FS4630", "FS4640", "FS4681", "FS4830"},
colname
) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450"),
Insert Into( sum_lst2, col_lst2[i] ), ///CAT1//
If( Contains( {"SS098", "SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" & colname <= "FS9799"),
Insert Into( sum_lst4, col_lst2[i] ), //CAT2//
),
Insert Into( sum_lst3, col_lst2[i] )///CAT3
)
);
Eval( Eval Expr( cdt << New Column( "CAT1", formula( Sum( Expr( sum_lst2 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT3", formula( Sum( Expr( sum_lst3 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT2", formula( Sum( Expr( sum_lst4 ) ) ) ) ) );Re: 중첩된 if 및 else 문에 도움이 필요합니다.다음은 귀하의 코드를 재작업한 것입니다. 51개 열을 모두 제대로 처리합니다.sum_lst2에 12개 열, sum_lst3에 39개, sum_lst4에 0개 열을 삽입합니다.
Names Default To Here( 1 );
//cdt = open("temp\Rawdata.csv");
cdt = Current Data Table();
sum_lst2 = {};
sum_lst3 = {};
sum_lst4 = {};
col_lst2 = cdt << get column names( Numeric);
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If(
Contains(
{"SS008", "SS009", "SS010", "SS015", "SS053", "FS9429", "FS9792", "FS9906", "FS9908", "FS1302", "FS1305",
"FS1308", "FS1360", "FS1373", "FS2744", "FS4621", "FS4625", "FS4630", "FS4640", "FS4681", "FS4830"},
colname
) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450")
,
Insert Into( sum_lst2, col_lst2[i] )///CAT1//
, // Else
Contains( {"SS098", "SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" &
colname <= "FS9799")
,
Insert Into( sum_lst4, col_lst2[i] ) //CAT2//
, // Else
Insert Into( sum_lst3, col_lst2[i] )///CAT3
);
);
Eval( Eval Expr( cdt << New Column( "CAT1", formula( Sum( Expr( sum_lst2 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT3", formula( Sum( Expr( sum_lst3 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT2", formula( Sum( Expr( sum_lst4 ) ) ) ) ) );
Re: 중첩된 if 및 else 문에 도움이 필요합니다.나는 당신이 매우 가깝다고 생각합니다! 두 번째 If() 문을 너무 빨리 닫았습니다. CAT2에 대해 모두 0을 얻었지만 CAT3에는 이제 값이 있습니다. 이 시점에서 CAT2에 대한 값을 기대한다면 조금 더 작업이 필요할 수 있습니다.
cdt = Current Data Table();
sum_lst2 = {};
sum_lst3 = {};
sum_lst4 = {};
col_lst2 = cdt << get column names( Numeric );
For( i = 1, i <= N Items( col_lst2 ), i++,
colname = Column( col_lst2[i] ) << get name;
If(
Contains(
{"SS008", "SS009", "SS010", "SS015", "SS053", "FS9429", "FS9792", "FS9906", "FS9908", "FS1302", "FS1305", "FS1308", "FS1360", "FS1373",
"FS2744", "FS4621", "FS4625", "FS4630", "FS4640", "FS4681", "FS4830"},
colname
) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450"),
Insert Into( sum_lst2, col_lst2[i] ), ///CAT1//
If( Contains( {"SS098", "SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" & colname <= "FS9799"),
Insert Into( sum_lst4, col_lst2[i] ), //CAT2//
Insert Into( sum_lst3, col_lst2[i] )///CAT3
)
)
);
Eval( Eval Expr( cdt << New Column( "CAT1", formula( Sum( Expr( sum_lst2 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT3", formula( Sum( Expr( sum_lst3 ) ) ) ) ) );
Eval( Eval Expr( cdt << New Column( "CAT2", formula( Sum( Expr( sum_lst4 ) ) ) ) ) );Re: 중첩된 if 및 else 문에 도움이 필요합니다.문제가 무엇인지 파악했습니다. Cat3의 경우 엄청난 값을 얻고 있습니다(열 형식을 수정한 후 범위 e15). 그 이유는 테이블에 열이 몇 개 더 있기 때문입니다.
남은 FS*와 함께 Cat3의 경우 내 스크립트는 다른 열의 값을 합산합니다.
else 문에서 열 이름이 FS*인 열만 어떻게 고려합니까?
| 안건 | 위치 | 오퍼 | TOTAL_TESTED | TOTAL_GOOD | TOTAL_BAD | 테스트 날짜 | 패키지 | 박사 | 프로그램 | 주 | FS0100 | FS0847 | FS0875 | FS0876 | FS0877 | FS1059 | FS1061 | FS1090 | FS1315 | FS1501 | FS1503 | FS1505 | FS1537 | FS1539 | FS1541 | FS1543 | FS1559 | FS1590 | FS1930 | FS1933 | FS2706 | FS2740 | FS2742 | FS2745 | FS3416 | FS3417 | FS3418 | FS3422 | FS3423 | FS3455 | FS3469 | FS3471 | FS3492 | FS3493 | FS5391 | FS9429 | FS9792 | FS9901 | FS9906 |
| | | | | | | | | | | | 132 | 1 | | | | | | | | | | | | | | | | | 삼 | | | | | | | | | | | | | | | | | | | | 1 |
| | | | | | | | | | | | 600 | 2 | | | | | | | | | | | | | | | | | 7 | 2 | | 1 | 4 | | | | 5 | | | 1 | 4 | | | | | 1 | 1 | 1 | 2 |
| | | | | | | | | | | | 562 | | | | | 1 | | | | | | | | | | | | | 9 | | | 1 | 1 | | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | | | | 2 | 1 |
| | | | | | | | | | | | 527 | 2 | | 2 | 1 | | 2 | 1 | | 7 | | 2 | 4 | 삼 | 삼 | 2 | | 24 | 18 | 2 | 삼 | | | 1 | 2 | | 1 | | 1 | | 4 | | 1 | 1 | 1 | 삼 | | | 2 |
| | | | | | | | | | | | 322 | | 1 | | | | | | 1 | | 2 | | | | | | 1 | | 7 | | | | 삼 | | | | | | | | | | | 2 | | | | | 삼 |
Re: 중첩된 if 및 else 문에 도움이 필요합니다.가지고 있는 마지막 Else 문에 대해(아래에 표시된 스니펫):
Insert Into( sum_lst3, col_lst2[i] )///CAT3
아래와 같이 마지막으로 중첩된 If() 문을 하나만 추가하는 것은 어떻습니까? 그런 다음 Else 문이 없습니다.
If(
Contains( colname, "FS" ),
Insert Into( sum_lst3, col_lst2[i] )
)///CAT3, no ELSE statement
Re: 중첩된 if 및 else 문에 도움이 필요합니다.Cat 1 및 Cat2의 일부인 FS 열을 제외해야 하기 때문에 도움이 되지 않습니다.
고양이 1 -
{"SS008", "SS009", "SS010", "SS015", "SS053", "FS9429", "FS9792", "FS9906", "FS9908", "FS1302", "FS1305", "FS1308", "FS1360", "FS1373",
"FS2744", "FS4621", "FS4625", "FS4630", "FS4640", "FS4681", "FS4830"},
colname
) | (colname >= "FS2900" & colname <= "FS2950") | (colname >= "FS3400" & colname <= "FS3450"),고양이 2 -
Contains( {"SS098", "SS090"}, colname ) | (colname >= "FS9700" & colname <= "FS9791") | (colname >= "FS9793" & colname <= "FS9799"),
Insert Into( sum_lst4, col_lst2[i] )
Cat3 - Cat1 및 Cat2의 일부인 모든 FS* 열