JMP JSLの列名のリストによる集計こんにちは、
テーブルがあり、列「学生」、列「件名」、列「クラス」で表にしたいのですが、列「件名」と列「クラス」はデータで使用する必要はありません。
列 "subject" があり、列 "class" がない場合は、列 "student" と列 "subject" で集計する必要があります。
列「クラス」があり、列「件名」がない場合は、列「学生」と列「クラス」で集計する必要があります。
すべての列がある場合は、3 つの列すべてで集計する必要があります。 以下にいくつかの例を示します。
例1:(列「件名」と列「クラス」の両方があります)
入力:
| クラス | 学生 | マーク | 主題 |
| 1 | あ | 10 | 算数 |
| 2 | あ | 15 | 化学 |
| 3 | あ | 12 | 化学 |
| 1 | B | 15 | 算数 |
| 2 | B | 12 | 化学 |
出力:
| クラス | 学生 | 主題 | 最大(マーク) |
| 1 | あ | 算数 | 10 |
| 2 | あ | 化学 | 15 |
| 3 | あ | 化学 | 12 |
| 1 | B | 算数 | 15 |
| 2 | B | 化学 | 12 |
例 2: (列「クラス」はありますが、列「件名」はありません)
入力:
| クラス | 学生 | マーク |
| 1 | あ | 10 |
| 2 | あ | 15 |
| 3 | あ | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
出力:
| クラス | 学生 | 最大(マーク) |
| 1 | あ | 10 |
| 2 | あ | 15 |
| 3 | あ | 12 |
| 1 | B | 15 |
| 2 | B | 12 |
例 3: (列 "subject" はありますが、列 "class" はありません)
入力:
| 学生 | マーク | 主題 |
| あ | 10 | 算数 |
| あ | 15 | 化学 |
| あ | 12 | 化学 |
| B | 15 | 算数 |
| B | 12 | 化学 |
出力:
| 学生 | 主題 | 最大(マーク) |
| あ | 算数 | 10 |
| あ | 化学 | 15 |
| B | 算数 | 15 |
| B | 化学 | 12 |
この問題を解決するのを手伝ってください。
ありがとう
Re: JMP JSL の列名のリストによる集計ありがとう@tsnelsonRe: JMP JSL の列名のリストによる集計これはあなたが探しているものですか?
names default to here(1);
dt=current data table();
// The list of columns to look for
theList={"Class","Student","Subject", "xxxxxx","xxxxxx"};
allColList = dt << get column names(string);
// Remove any columns from theList that are not in the data table
For(i=n items(theList),i>=1, i--,
If(n rows(loc(allColList,theList[i]))==0,
remove from(theList,i,1)
)
);
// Run the tabulate
Tabulate(
Show Control Panel( 0 ),
Add Table(
Column Table( Analysis Columns( :Marks ), Statistics( Max ) ),
Row Table( Grouping Columns( eval(theList) ) )
)
);
さまざまなターゲット列がグループ化列以外の役割を果たしている場合は、必要なさまざまな入力構文を説明するコードを開発する必要があります。
Re: JMP JSL の列名のリストによる集計@txnelsonデータに存在するかどうかに関係なく、列「クラス」と列「件名」のような5つの列があります。 ここで集計するには、IF 条件のすべての順列を指定する必要があり、それぞれに個別の集計コードが必要です。 コードが乱雑になりすぎます。
代わりに、列のすべてのリストを提供する単一の Tabulate 関数でそれを行うことができれば、データで使用可能な列のみが取得されます。
ありがとうRe: JMP JSL の列名のリストによる集計Tabulate コードを 1 つのコード セットに凝縮すると、コードがはるかに複雑になります。
もっと多くの列があると言うとき、さらに説明できますか?
Re: JMP JSL の列名のリストによる集計@txnelson返信ありがとうございます。
私の元のデータセットにはそのような列がたくさんあるので、この問題を表形式スクリプトの単一ブロックで解決できますか。Re: JMP JSL の列名のリストによる集計サンプル データ テーブルで 3 つのシナリオをそれぞれ実行し、各実行の各スクリプトをスクリプト ウィンドウに保存します。次に、適切なスクリプトをそれぞれ取得し、次のスクリプトの指定された位置に配置します。
names default to here(1);
dt= current data table();
colNames = dt << get column names(string);
// Here is the IF() structure to add in the tabulate code to
If( N Rows(loc(colNames, "Subject" ) ) > 0 & N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tabulate code that has Student, Subject and Class
,
N Rows(loc(colNames, "Subject" ) ) > 0,
// Add in the tablulate code that has just Student and Subject
,
N Rows(loc(colNames, "Class" ) ) > 0,
// Add in the tablulate code that has just Student and Class
);