ネストされたifおよびelseステートメントで必要なヘルプ特定のFS*/SS*をCAT1およびCAT2としてバケット化するためにifelseステートメントを使用しています。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 | | | | | | | | | | | | | | | | | 3 | | | | | | | | | | | | | | | | | | | | 1 | 132 | 1 | | | | 3 | | | | | | 1 |
| 2 | 600 | 2 | | | | | | | | | | | | | | | | | 7 | 2 | | 1 | 4 | | | | 5 | | | 1 | 4 | | | | | 1 | 1 | 1 | 2 | 600 | 2 | | 0 | | 9 | 5 | 10 | | 1 | 1 | 3 |
| 3 | 562 | | | | | 1 | | | | | | | | | | | | | 9 | | | 1 | 1 | | | 1 | 1 | 1 | 2 | 1 | 1 | 1 | 1 | 2 | | | | 2 | 1 | 562 | | 1 | | | 9 | 2 | 11 | | | | 3 |
| 4 | 527 | 2 | | 2 | 1 | | 2 | 1 | | 7 | | 2 | 4 | 3 | 3 | 2 | | 24 | 18 | 2 | 3 | | | 1 | 2 | | 1 | | 1 | | 4 | | 1 | 1 | 1 | 3 | | | 2 | 527 | 5 | 3 | | 45 | 20 | 4 | 10 | 1 | 3 | | 2 |
| 5 | 322 | | 1 | | | | | | 1 | | 2 | | | | | | 1 | | 7 | | | | 3 | | | | | | | | | | | 2 | | | | | 3 | 322 | 1 | | 1 | 3 | 7 | 3 | 2 | | | 0 | 3 |
スクリプティングRe:ネストされたifおよびelseステートメントで必要なヘルプ以下のようなものはどうですか? If()ステートメントの間にglue演算子を使用したため、スクリプトに「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にはゼロしかありません。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列すべてを適切に処理します。12列をsum_lst2に挿入し、39列をsum_lst3に挿入し、0列をsum_lst4に挿入します。
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ステートメントで必要なヘルプあなたはとても近いと思います! その2番目のIf()ステートメントを少し早く閉じました。 CAT2のすべてのゼロを取得しますが、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で)巨大な値を取得しています。理由は、テーブルにさらにいくつかの列があるためです。
Cat3と残りのFS*の場合、私のスクリプトは他の列の値を合計しています。
elseステートメントで、列名がFS *の列のみをどのように考慮するのですか?
| アイテム | 位置 | オペラ | TOTAL_TESTED | TOTAL_GOOD | TOTAL_BAD | 試験日 | パッケージ | 博士 | Prgnm | 週 | 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 | | | | | | | | | | | | | | | | | 3 | | | | | | | | | | | | | | | | | | | | 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 | 3 | 3 | 2 | | 24 | 18 | 2 | 3 | | | 1 | 2 | | 1 | | 1 | | 4 | | 1 | 1 | 1 | 3 | | | 2 |
| | | | | | | | | | | | 322 | | 1 | | | | | | 1 | | 2 | | | | | | 1 | | 7 | | | | 3 | | | | | | | | | | | 2 | | | | | 3 |
Re:ネストされたifおよびelseステートメントで必要なヘルプあなたが持っている最後のElseステートメント(以下に示すスニペット):
Insert Into( sum_lst3, col_lst2[i] )///CAT3
以下のように、最後にネストされたIf()ステートメントを1つ追加するだけではどうでしょうか。 次に、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*列