テーブルに 4 つの列があり、行ごとに 98% を下回る列の数を調べる必要がある場合、これを行うための簡単な数式をどのように記述すればよいでしょうか。
同様の投稿がいくつかありますが、必要以上に複雑です。
ありがとう
こんにちは@fionaweston 、
前述したように、これは Counts スクリプトを使用して作成したデータ テーブルのモックアップです。 数値/連続列のみがカウントされ、テーブル内の他のデータ/モデリング タイプの列は無視されます。
お役に立てれば!、
DS
こんにちは@fionaweston 、
内容を拡張して一般化するには@ゲオルグ投稿されたとおり、このスクリプトは任意のデータ テーブルに保存でき、カウントを含む新しい列が生成されます。 これを追加したかったのは、データ テーブルには数百の列が存在する可能性があり、これは、どんなに多くの行を持っていても処理できると述べたためです。
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Counts", Numeric, Continuous );
test = Function( {val},
If( val < 0.98, 1, 0 )
);
For( r = 1, r <= N Rows(), r++,
count = 0;
ret = 0;
For( col = 1, col <= N Col() - 1, col++,
If( Is Missing( Column( col )[r] ) == 1,
count = 0,
count = test( Column( col )[r] )
);
ret += count;
:Counts[r] = ret;
);
);データ テーブル名の横にあるホット ボタンをクリックして [新しいスクリプト] を選択し、上からスクリプトをコピーして新しいスクリプトに貼り付け (もちろん名前を付けます)、緑色の矢印をクリックして実行します。 その後、そのスクリプトをコピーして任意のデータ テーブルに貼り付けることができます。もちろん、使用しているデータ セットの「test」関数の比較値を変更します。
お役に立てれば!、
DS
更新: 元の投稿で列の欠損値が説明されていないことに気づき、欠損値を考慮して修正しました。
おそらくこの式で次のことができるでしょう。
test = Function( {val},
If( val < 0.98, 1, 0 )
);
Sum( test( :A ), test( :B ), test( :C ), test( :D</img> ) );