String_Aggregation을 사용한 요약안녕,
다음과 같은 테이블을 어떻게 코딩 할 수 있습니까?
-캐릭터 및
-conact_items (예 :,로 구분)로 해당 셀을 작성합니다.
-SQL 코드 "SELECT sex, String_Agg (Name, ',') as ConcatName FROM 'Big Class'"GROUP BY sex
나는 이것이 루핑으로 가능하다는 것을 알고 있지만 또 다른 우아한 방법이 있는지 궁금합니다.
"Big Class"테이블에 따라 결과는 다음과 같아야합니다.
성별 ConcatName
f 케이티, 루이즈, ....
m TIM, JAMES, ...
많은 감사
스크립팅Re : String_Aggregation을 사용한 요약표 형식 플랫폼에는 연결 요약 기능이 필요한 것 같습니다.다음은 요약 테이블의 각 행에서 단일 루프를 사용하는 한 가지 방법입니다.
Names default to here(1);
dt = Open("$Sample_data/big class.jmp");
//Table with each unique sex and count
dtSum = (dt << Tabulate(
Add Table( Row Table( Grouping Columns( :sex ) ) )
)) << Make Into Data Table;
//blank column for concatenated names
dtSum << New Column("Names", Character, "Nominal");
//loop for each row/sex
for each row(dtSum,
// Use Eval and eval expression to insert the sex of the current
// row into the where expression of the other table
Eval(Eval Expr(
//fill in the names one row at a time, joining all values together
:Names = char( Concat Items(
//get names from main table matching the sex of the summary table
dt:name[ dt << Get Rows Where( dt:sex == Expr(:sex) ) ],
","
) )
))
);
Re : String_Aggregation을 사용한 요약다음은 JSL (JMP 15)을 사용한 시도입니다. 변환 및 결합 열을 사용하여 대화식으로도 수행 할 수 있습니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt1 = dt << Transpose( columns( :name ), By( :sex ), Output Table( "Test" ) );
dt1 << Combine Columns(
delimiter( ", " ),
Columns( 3 :: N Col( dt1 ) ),
Selected Columns are Indicator Columns( 0 ),
Column Name( "ConcatName" )
) << deletecolumns( 2, 4 :: N Col( dt1 ) );
Re : String_Aggregation을 사용한 요약@ih 과 @ms 좋은 답변을 주었지만 이미이 솔루션을 작업 중 이었으므로 JSL을 통해 다른 방법을 보여주기 위해 게시 할 것이라고 생각했습니다.
활용 하위 집합 옵션 부분 집합 각 하위 그룹에 대한 테이블을 가져온 다음 이름 열에서 값을 가져 와서 Concat 항목 () 이름 문자열을 작성합니다.
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt_list = dt << Subset(
By( :sex ),
All rows,
Selected columns only( 0 ),
columns( :name, :age, :height, :weight ),
private
);
nt = New Table();
group_col_name = Word( 1, dt_list[1] << get name, "=" );
nt << New Column( group_col_name, character );
nt << New Column( "concat name" );
nt << add rows( N Items( dt_list ) );
For( i = 1, i <= N Items( dt_list ), i++,
Column( nt, group_col_name )[i] = Word( 2, dt_list[i] << get name, "= " );
nt:concat name[i] = Concat Items( dt_list[i]:name << get values, ", " );
);
For( i = 1, i <= N Items( dt_list ), i++,
Close( dt_list[1], nosave )
);
dt_list = Empty();
Re : String_Aggregation을 사용한 요약나는 Subset (By () ...)가 목록을 반환한다는 것을 몰랐습니다. 매우 유용 할 수 있습니다. 감사합니다 Jeff!
/ 마커스