<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />こんにちは、
データテーブルを開き(例としてBig Class.jmpを使用しますが、これを任意のテーブルに対して実行したい)、各列の要約テーブルを作成して、各列の非欠損値の数を返したいと考えています(表に示すように)。下に)。
| N 行 | N(名前) | N(年齢) | N(性別) | N(高さ) | N(重量) |
|---|
| 40 | 40 | 40 | 40 | 40 | 40 |
これに対して 2 つの異なるアプローチを試しましたが、成功しませんでした (JMP 9.0.3 64 ビットを使用しています)。
最初の例では、解析された文字列のリスト {N(:name),N(:age),N(:sex),N(:height),N(:weight)} を Summary() に渡そうとします。 ただし、これを実行すると、N 行の集計テーブルが作成されるだけです。
例1
//////////////////////////////////////////////// /////////////////////////////
Open( "$SAMPLE_DATA/Big Class.jmp" );
dt = 現在のデータテーブル();
ColList = dt<<列名を取得();
icols = N 項目(colList);
sumList={};
for(i=1, i<=icols, i++,
Insert Into(sumList, parse("N(:" || char(colList) ) || ")"))
);
summDt = dt<
//////////////////////////////////////////////// /////////////////////////////
次に、式を定義し、解析された文字列 (N(:name),N(:age),N(:sex),N(:height),N(:weight)) を渡そうとしました。 ただし、この式を評価しようとすると、次のような結果が得られます...
予想外の「、」。 おそらく「;」が欠落している可能性があります。または "、"。
1 行目 9 列目: N(:名前)►、N(:年齢)、N(:性別)、N(:身長)、N(:体重)
無視された残りのテキストは、
例2
//////////////////////////////////////////////// /////////////////////////////
Open( "$SAMPLE_DATA/Big Class.jmp" );
dt = 現在のデータテーブル();
ColList = dt<<列名を取得();
icols = N 項目(colList);
MyExpr = expr(summDt = dt<
for(i=1, i<=icols, i++,
if(i==1, strColumns = "N(:" || char(colList ) || ")"、strColumns = strColumns || ", N(:" || char(colList ) || ")")
);
// チェックのために上記をバイパスします
//strColumns = "N(:name)"; // 1 つの列に対しては機能しますが、複数の列を渡そうとするとエラーがスローされます (つまり、「予期しない ","。 おそらく「;」が欠落している可能性があります。または "、"。")
テスト = Eval Expr(MyExpr);
テスト;
//////////////////////////////////////////////// /////////////////////////////
私は何か愚かなことをしているに違いありません。
アドバイス/助けをいただければ幸いです。
ありがとう。
ありがとうmpb!
今ではかなり恥ずかしいと感じています - とても単純なことだったのです
この例は機能するようで、役に立つかもしれません。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
ColList = dt << 列名を取得();
dtsum = dt << Summary(Mean( Eval(colList ) ) );