'for eachrow'およびネストされた 'for'ループを使用した条件付き書式(色)の問題こんにちは、
私はスクリプトの最後にいて、さまざまな列(数値と文字の両方)に大量のデータを要約しています。
特定の条件を満たす数値セルをフォーマットするためのループは簡単ですが、特定の部分文字列を含む文字列に色を割り当てる際に問題が発生します。
たとえば、セル(次の内容:1,1,2,1,1,2,3,3)は、文字「3」が1回出現するため、赤色で表示されます。
セルの内容全体を指定しても問題ありませんが、「3」を探して色を付けようとすると失敗します。
以下のスクリプトを追加しました。
任意の提案をいただければ幸いです。
ベスト、
セバスチャン
Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c="FOB";
b={"3"};//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Light Red", Row())
)
)));
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c="FOB";
b={"1,1,2,1,1,2,3,3"};
For(i=1,i<=nc,i++, if( Contains( col[i], c ),
for each row(
If( contains(b,as column(col[i])),
column(col[i])<< color cells( "Red", Row())
)
)));
</GET>データ表スクリプティングRe: 'for eachrow'とネストされた 'for'ループを使用した条件付き書式(色)の問題あなたはContains()関数を逆方向に指定していて、JMPリストを比較していました。それらを修正すれば問題なく動作します。

Names Default To Here( 1 );
clear log();
dt = New Table( "test",
Add Rows( 8 ),
New Column( "unique_group_id",
Character,
"Nominal",
Set Values(
{"ELN-19-0588-A", "ELN-19-0588-B", "ELN-19-0588-C", "ELN-19-0588-D",
"ELN-19-0588-E", "ELN-19-0588-F", "ELN-19-0588-G", "ELN-19-0588-H"}
),
Set Display Width( 115 )
),
New Column( "FOB max",
Character,
"Nominal",
Set Selected,
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,3,0,0,1,0,2", "1,1,2,1,1,2,3,3", "0,0,0,0,0,0,0,0",
"4,2,2,3,2,3,3,4", "1,0,0,1,1,1,1,1"}
)
),
New Column( "glib1 % PBS - potatoe",
Numeric,
"Ordinal",
Format( "Best", 12 ),
Set Selected,
Set Values( [100, 113.39, 108.3, 156.38, 822.21, 768.51, 487.2, 222.56] )
),
New Column( "calb (IHC) cere",
Character,
"Nominal",
Set Values(
{"0,0,0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0", "0,0,0,0,0,0,0,0",
"0,0,0,0,0,0,0,0", "3,4,3,4,3,3,3,4", "3,3,3,5,2,3,3,3",
"0,0,0,0,0,0,0,0", "0,0,0,0,0,0,1,0"}
)
)
);
wait(2);
col=dt <<GET column="" names="">200,
column(col[i]) << color cells( "Light Red", Row())
)
)));
//Does not work - it needs to be an exact match
c = "FOB";
b = "3";//trying to look for cells in columns labelled with FOB whihc contains the character '3'
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Light Red", Row() )
);
)
)
);
wait (2);
//Works when specifying exactly the content of the cell(s) to match
c = "FOB";
b = "1,1,2,1,1,2,3,3";
For( i = 1, i <= nc, i++,
If( Contains( col[i], c ),
For Each Row(
If( Contains( As Column( col[i] ), b ),
Column( col[i] ) << color cells( "Red", Row() )
)
)
)
);</GET>
Re: 'for eachrow'とネストされた 'for'ループを使用した条件付き書式(色)の問題こんにちは、
以下のコードの67行目に一致するようにコードを変更します。
含む()を使用すると、指定する引数に応じて、いくつかの異なることを実行できます。 例えば:
含まれている({"cat"、 "dog"、 "mouse"、 "dog"、 "horse"}、 "dog")は2を返します。これは、提供されたリストで最初に出現する "dog"が位置2にあるためです。
含む({"cattle"、 "dog"、 "mouse"}、 "cat")は、リストに "cat"がないため、0を返します。 リストを要素ごとに検索して、「cat」が要素のサブストリングであるかどうかを確認する場合は、リストを反復処理する必要があります。
元のコードは、この最後の例に少し似ています。Contains(b、:col)は、列のセル値が{"3"}として定義したbの要素と一致するかどうかを確認します。 一致するものが見つかりません。
逆に、新しいコードContains(:col、b [1])は、リストbの最初の要素である「3」であるb [1]が列のセル値に含まれているかどうかを確認します。 このように使用すると、Contains(<< Whole >>、<< part >>)関数は、文字列<< Whole >>内のサブ文字列<< part >>を検索します。これが必要だと思います。
乾杯、
ブレイディ
含む({"cat"、 "dog"、 "mouse"}、 "cat")は
