JSLを使用して欠損値を「0」に置き換える方法<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />JSL を使用して欠損値を「0」に置き換えるにはどうすればよいですか?
「すべて検索して置換」を使用してこれを手動で行うこともできますが、毎日自動的に実行されるコードに組み込む必要があります。
Re: JSL を使用して欠損値を「0」に置き換える方法これは、再生ボタンを使用してスクリプトウィンドウから実行している場合には機能しますが、デバッガー内で実行したり、.jsl の自動実行によって起動したりする場合は機能しません。
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
ラギンケイジャン
JMP13.2.1
Re: JSL を使用して欠損値を「0」に置き換える方法確かに、注意喚起の言葉はありがたいです。確かに、それについては考えていませんでした。
また、失われたデータは貴重なデータである可能性があり、そのままにしておくことが最善の場合があることを覚えておくことも重要です。
Re: JSL を使用して欠損値を「0」に置き換える方法それはすべて本当です。そろそろ警戒旗を立てる時期が来たような気がした。ただ私たちができるJMP で何かをするということは必ずしも私たちを意味するわけではありませんしたほうがいい。
Re: JSL を使用して欠損値を「0」に置き換える方法あなたの言っていることは真実ですが、データについての仮定が含まれています。たとえば、彼のデータは連続していない可能性がありますか?0 が記録されず、欠落したままになる場合があります。誰かが 0 を false、1 を true として使用して一方向分析を実行しようとしたとします。ゼロが欠落していると表示されてしまうと問題が発生するでしょうこれは、一方向分析では JMP の欠落行が無視されるためです。最終的にカテゴリは 1 つだけになります。
0 が欠落していると表示される理由は他にもあります。通常、大規模なデータベースに 0 を格納するのはスペースの無駄です。今はポケモンGOが流行っているので、それを例に挙げていきます。1 日に捕まえたすべてのポケモン、ラタッタ 12 匹とピジー 6 匹を記録したいと思うかもしれません。ただし、その日に捕まえられなかった他の 148 匹のポケモンのために 0 を保存したいとは思いません。もしそうなら、すぐにデータベースが役に立たない情報でいっぱいになってしまうでしょう。したがって、データをクエリすると、いつでもほとんどのポケモンが欠落しますが、欠落は = から 0 になります。
同様の状況では、データ変換の問題、不適切に設計されたクエリなど、0 b/c に相当する欠落データが発生する可能性があります。
Re: JSL を使用して欠損値を「0」に置き換える方法パーティーに遅れて申し訳ありませんが、どうしても口を挟まざるを得ません。欠損値をゼロ (または平均値やその他の単一代入法) に設定することには、重大な欠点があります。これらのアプローチのほとんどは、データが完全にランダムに欠落している理想的な条件であっても、偏ったパラメーター推定値を生成します。データの欠落に対処する、より良い方法があります。
Re: JSL を使用して欠損値を「0」に置き換える方法他に誰も回答しなかったため、解決策は同じです。代わりに文字列を取得し、適合する文字と等しい行を設定します。以下の場合は「N/A」です。
=0 に設定すると列が数値に変更され、すべての文字データが削除されることに注意してください。ただし、="0" で問題ありません。
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
Re: JSL を使用して欠損値を「0」に置き換える方法いいね! ...最後の 2 行で、clsRej を clsMat に置き換える必要がありますね。
一方、文字列についても同様の解決策はありますか?
Re: JSL を使用して欠損値を「0」に置き換える方法別の方法...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
等
多くの場合、論理インデックス作成はループよりも高速です
Re: JSL を使用して欠損値を「0」に置き換える方法みんなありがとう!
乾杯!
Re: JSL を使用して欠損値を「0」に置き換える方法単一のループを使用してそれを行うさらに別の方法 (数値列のみ)。
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
Re: JSL を使用して欠損値を「0」に置き換える方法これは基本的に exj の応答と同じですが、少しすっきりしています。します;ただし、数値列でのみ変更が欠落します。
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
Re: JSL を使用して欠損値を「0」に置き換える方法j は JSL 関数でもあるため、ループ変数として使用することは避けます。
J(nrows, , )
関数:同一の値の行列を作成します。
戻り値:マトリックス。
引数:
狭い:行列の行数。 もしもncols指定されていない、狭いとしても使用されますncols 。
ncols:行列の列数。
価値:マトリックスに値を設定するために使用される値。 もしも価値指定されていない場合は 1 が使用されます。
Re: JSL を使用して欠損値を「0」に置き換える方法やあ、
これは、書籍「Jump into scripting」に基づいています。 欠損値をすべて z に置き換えます。
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
お役に立てれば。