그룹화된 셔플빅 클래스에서는 학생들이 같은 나이의 다른 학생에게 편지를 써야 합니다 (학생 A가 학생 A에게 편지를 쓰는 것은 가능합니다).
name_2를 추가하려면 어떤 열 수식을 사용해야 하나요?
해당 수식은 수백만 개의 행이 있더라도 빠르게 실행되어야 합니다.
자동화 및 스크립팅Re: 그룹 셔플해결 방법: 더미 테이블 - 셔플 - 조인
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 )
);

Re: 그룹 셔플효과가 없는 해결 방법: 셀프 조인
왜?
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 )
);

Re: 그룹 셔플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))
);
결과를 검증하거나 속도를 테스트하지는 않았습니다.
Re: 그룹 셔플콜 셔플() 함수 때문에 문제가 생겼습니다.
그룹화된 인덱스를 행 인덱스로 변환하려면 어떻게 해야 하나요?
아, 물론이죠. col at(idx, byGroup) 의 입력값으로 그룹화된 인덱스를 사용하면 완벽하게 일치합니다!
새로운 기능의 좋은 예시입니다.