グループシャッフルビッグクラスでは、生徒は同じ年齢の別の生徒に手紙を書かなければなりません(生徒 A が生徒 A に手紙を書くことは OK です)。
name_2 を追加するにはどの列式を使用できますか?
行数が 100 万行であっても、数式は高速になるはずです。
自動化とスクリプトグループ化されたシャッフルについて回避策:ダミーテーブル - シャッフル - 結合
Names Default to Here(1);
dt1 = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
New Column( "Rank1", Formula( Col Rank( 1, :age ) ));
New Column( "Rank2", Formula( Col Rank( random integer (100000), :age ) ));
New Column( "name 2", Character, "Nominal", Formula( :name ));
New Column( "age 2", Formula( :age ));
dt2 = dt1 << Subset( All rows, Selected columns only( 0 ) );
dt1 << Join(
With( dt2 ),
Match Flag( 0 ),
Suppress main table formula evaluation( 0 ),
Select( :name, :age ),
SelectWith( :name 2, :age 2 ),
By Matching Columns( :age = :age, :Rank1 = :Rank2 ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 1 )
);

グループ化されたシャッフルについて機能しない回避策:自己結合
なぜ?
Names Default to Here(1);
dt1 = Open( "$SAMPLE_DATA/Big Class Families.jmp" );
New Column( "Rank1", Formula( Col Rank( 1, :age ) ));
New Column( "Rank2", Formula( Col Rank( random integer (100000), :age ) ));
New Column( "name 2", Character, "Nominal", set each value( :name ));
New Column( "age 2", set each value ( :age ));
//dt2 = dt1 << Subset( All rows, Selected columns only( 0 ) );
dt1 << Join(
With( dt1 ),
Select( :name, :age ),
SelectWith( :name 2, :age 2 ),
By Matching Columns( :age = :age 2, :Rank1 = :Rank2 ),
Drop multiples( 0, 0 ),
Include Nonmatches( 1, 1 )
);

グループ化されたシャッフルについてCol At() と Col Shuffle() を組み合わせる
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
new_col = dt << New Column("Shuffle",
Character,
Nominal,
Formula(Col At(:name, Col Shuffle(:age), :age))
);
結果を確認したり速度をテストしたりしなかった
グループ化されたシャッフルについて列シャッフル()で行き詰まってしまいました:
グループ化されたインデックスを行インデックスに変換するにはどうすればよいですか?
ああ、もちろんです。グループ化されたインデックスをcol at(idx, byGroup) の入力として使用します -完璧に一致します!
新しい機能の良い例です。