행별로 필터링하고 열을 쌓으시겠습니까?몇 가지 기준에 따라 하위 집합 테이블을 만드는 방법을 알고 있습니다.
dt << Row Selection( Select where( (:Stat == "mean"), Current Selection( Extend )) );
dt << Select Columns( [10, 20] );
dt2 << Subset( Output Table( "test"), Selected Rows( 1 ), Selected columns( 1 ) );
그러나 이제 여러 기준에 대해 위의 작업을 반복하고 선택 항목을 쌓아야 합니다. 즉, 새 테이블에는 열 10이 고정 열로 포함된 다음 위 기준과 일치하는 행만 포함된 열 20을 계속 추가해야 합니다. 행 수는 항상 동일합니다.
"스택" 명령은 선택 항목과 함께 작동하지 않습니다. 그래서 다른 명령이 이를 수행할 수 있는지 잘 모르겠습니다.
데이터 혼합 및 정리Re: 행으로 필터링하고 열을 쌓으시겠습니까?그게 사실 제가 원했던 것입니다. 다시 한 번 감사드립니다!
Re: 행으로 필터링하고 열을 쌓으시겠습니까?내가 추측하고 있는 것이 원하는 파이널 테이블 결과인지 다시 생각해 보십시오.
테이블=>분할
아래 예는 :Sex 열로 분할합니다. 이 열은 :Freq 열이 되고 분할 열은 15열과 19열이 되는 신장과 체중입니다.
출력은 각 Split By 열 값에 대해 열 쌍을 생성합니다.
Names Default To Here( 1 );
dt = open("$SAMPLE_DATA\big class.jmp");
// Split data table
// → Data Table( "Untitled 66" )
Data Table( "big class" ) << Split(
Split By( :Sex ),
Split( :height, :weight ),
Remaining Columns( Drop All ),
Sort by Column Property
);

Re: 행으로 필터링하고 열을 쌓으시겠습니까?감사합니다. 정답이었습니다! 남은 것은 for 루프에 넣는 방법입니다. 내 평가판은 다음과 같습니다.
For(i=1, i<=NItems(freq_list), i++,
dt << clear select;
dt << Row Selection( Select where( (:Freq == (freq_list[i])), Current Selection( Extend )) );
dt << Select Columns( [15,19] );
dt << Subset( ( Selected Columns ), Output Table Name( freq_list[i] ) );
);
그러나 이것은 각 루프의 시작 부분에서 선택을 지우더라도 두 개의 동일한 테이블을 생성합니다.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?문제는 두 테이블의 열 이름이 같다는 것입니다.따라서 JMP는 값을 덮어씁니다.다음은 이것을 처리하는 방법에 대한 간단한 예입니다.이제 이러한 유형의 업데이트가 주어지면 두 개의 데이터 테이블이 행 1과 행 1로 정렬됩니다.
열 간의 관계가 존재하지 않기 때문에 열 간에 비교할 수 없는 문제가 발생할 수 있습니다.
dt << Row Selection( Select where( (:Freq == "F0"), Current Selection( Extend )) );
dt << Select Columns( [15,19] );
dt2 = dt << Subset( ( Selected Columns ), Output Table Name( "F0" ) );
dt << clear select;
dt << Row Selection( Select where( (:Freq == "F1"), Current Selection( Extend )) );
dt << Select Columns( [15,19] );
dt3 = dt << Subset( ( Selected Columns ), Output Table Name( "F1" ) );
// Rename the columns
column(dt3,1) <<SET name=""></SET>
Re: 행으로 필터링하고 열을 쌓으시겠습니까?글이 많아 죄송합니다. 나는 여전히 갇혀있다. 지금 내가 가지고 있는 것은 각각 내가 관심 있는 열이 하나씩 있는 두 개의 테이블을 생성하는 이 스크립트뿐입니다. 테이블 1에서 테이블 2로 하나의 열을 수동으로 복사하여 붙여넣을 수 있지만 자동으로 수행할 수는 없습니다.
dt << Row Selection( Select where( (:Freq == "F0"), Current Selection( Extend )) );
dt << Select Columns( [15,19] );
dt << Subset( ( Selected Columns ), Output Table Name( "F0" ) );
dt << clear select;
dt << Row Selection( Select where( (:Freq == "F1"), Current Selection( Extend )) );
dt << Select Columns( [15,19] );
dt << Subset( ( Selected Columns ), Output Table Name( "F1" ) );
Re: 행으로 필터링하고 열을 쌓으시겠습니까?아니요, 위의 코드는 여전히 연결됩니다. "업데이트" 명령을 시도하겠습니다.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?다음은 수동으로 작동하는 것으로 보이는 코드입니다. 이제 루프에서 수행하려고 합니다.
dt << Row Selection( Select where( (:Stat == "selection1"), Current Selection( Extend )) );
dt << Select Columns( [15, 19] );
dt << Row Selection( Select where( (:Stat == "selection2"), Current Selection( Extend )) );
dt << Select Columns( [15, 19] );
dt << Subset( ( Selected Columns ), Output Table Name( "Subset_1_2" ) );
Re: 행으로 필터링하고 열을 쌓으시겠습니까?연결하지 않고 새 열을 추가하려면 간단히 업데이트 플랫폼을 사용하십시오.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?감사합니다. 연결(행 방향) 대신 스택(열 방향)이 필요하다는 점을 제외하고는 거의 원하는 것입니다. 즉, 선택 열의 길이가 L인 경우 새 테이블의 행 수는 같지만 열은 2개(길이가 두 배인 열 하나가 아님)를 원합니다.Re: 행으로 필터링하고 열을 쌓으시겠습니까?에 집어 넣다() 당신이 생각하는 것처럼 보이는 것을 하지 않습니다.
코드에서 데이터 테이블 참조 dt를 dtstacked 목록에 반복적으로 삽입합니다. 선택한 행이나 열과는 아무런 관련이 없습니다.
Subset()을 사용하여 선택한 행과 열의 새 데이터 테이블을 만들고 해당 참조를 dtstacked에 삽입한 다음 연결해야 합니다.
그러나 그것은 필요하지 않은 것 같습니다. 맨 끝에서 루프를 통해 매번 선택 항목을 확장하기 때문에 선택한 행과 열의 하위 집합을 수행하고 연결된 데이터 테이블과 동일한 결과를 얻을 수 있습니다.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?감사합니다. 하지만 작동하지 않았습니다.
dt = current data table();
my_list = {"F0","F1"};
dtBase = New Table("Base");
dtStacked = {};
For( i = 1, i <= N Items( my_list ), i++,
dt << Row Selection( Select where( (:Freq==my_list[i]), Current Selection( "Extend" )) );
dt << Select Columns( [19] );
Insert Into( dtStacked, dt );
dtBase << Concatenate( dtStacked );
Close( dtStacked, nosave );
);dtBase가 비어 있습니다.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?아.....선택한 행을 삭제하는 것이 맞습니다.그러나 선택되지 않은 항목을 삭제하려면 다음을 사용하십시오.
dtStack << Invert Row Selection;
행을 삭제합니다.
여러 독립 누적 데이터 테이블을 추가하려면 다음을 수행하십시오.
- 반복 스택 인스턴스를 시작하기 전에 빈 기본 데이터 테이블을 생성하여 모든 스택 테이블을 연결하게 됩니다.
dtBase = New Table("Base");
- 그런 다음 생성한 각 스택 테이블에 대해
- 누적 데이터 테이블에서 원하지 않는 행을 삭제하십시오.
- Stacked 테이블을 Base 테이블에 연결
dtBase << Concatenate( dtStacked );
- 누적 테이블 삭제
Close( dtStacked, nosave );
Re: 행으로 필터링하고 열을 쌓으시겠습니까?할 수 있다고 생각한 방법은 다음과 같습니다(하지만 작동하지 않음).
my_list = {"F0","F1"};
stackcols = {};
For( i = 1, i <= N Items( my_list ), i++,
dt << Row Selection( Select where( (:Freq==my_list[i]), Current Selection( "Extend" )) );
dt << Select Columns( [19] );
Insert Into( stackcols, dt )
);
dt2 << Subset( Output Table( "aa"), Selected Rows( 1 ), Selected columns( 1 ) );기본적으로 "Freq" 열에 따라 활성 테이블을 필터링합니다. 먼저 "F0" 값으로 필터링한 다음 "F1"으로 필터링합니다. 이것은 열 19에 있습니다. 해당 선택 항목을 'stackcols'라는 선택 목록에 추가합니다. 그래서 루프 후에 나는 이것이 두 개의 열 전체 목록이 될 것으로 기대하고 있습니다. 그런 다음 그것으로 테이블을 만들고 싶습니다("aa"라고 함). 그러나 작동하지 않습니다.
Re: 행으로 필터링하고 열을 쌓으시겠습니까?(실수로 솔루션으로 수락 누르기)
고맙지만 선택한 행을 삭제하고 싶지 않습니다. 내가 처리할 수 있지만 스택을 사용할 때 선택 항목을 추가하려면 어떻게 해야 합니까?Re: 행으로 필터링하고 열을 쌓으시겠습니까?다음은 스택 플랫폼을 사용할 때 선택한 행을 삭제하는 쉬운 방법의 예입니다.
names default to here(1);
// Open Data Table: Big Class.jmp
// → Data Table( "Big Class" )
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << Row Selection( Select where( (:Sex=="F"), Current Selection( "Extend" )) );
// Stack data table
dtStack = dt << Stack(
columns( :height, :weight ),
Source Label Column( "Label" ),
Stacked Data Column( "Data" )
);
dtStack << delete rows;