단 하나의 열 쌓기나는 JMP가 단지 하나의 칼럼을 스태킹한다는 것을 알게되어 실망했다. 그러나 하나의 열만 쌓는 것이 이해가되지 않는다는 것을 이해합니다. 단지 데이터 변환 일 뿐이므로 이해하기가 쉽습니다.
어쨌든, 나는 대화를 열고 내가했던 것보다 누가 더 좋은 일을 만들어 낼 수 있는지보고 싶었습니다. 여기 내거야.
Names Default to Here(1);
//Example Data Table
dt = Open( "$SAMPLE_DATA/Decathlon.jmp" );
//col list is list of columns from 1 to n (never an empty list)
colList = {"Javelin", "Pole Vault"};
//Stack columns to prepare data for analysis
if(nitems(colList) > 1,
analysisColsExpr = Expr(columns());
for(i=1; imax=nitems(colList), i<=imax, i++,
col = Column(dt, colList[i]);
insert into(analysisColsExpr, col);
);
dtAnalysis = Eval(Eval Expr(dt << Stack(
Expr( Name Expr( analysisColsExpr )),
Source Label Column( "AnalysisType" ),
Stacked Data Column( "AnalysisValue" ),
Output Table( "Stacked Data" )
)));
close(dt, nosave);
,
//Can't stack only one column adjust columns to match above strategy
dt << New Column("AnalysisType", Character, Nominal, Formula(colList[1]));
column(dt, colList[1]) << Set Name("AnalysisValue");
dt << Set Name("Stacked Data");
dtAnalysis = dt;
);
//Run Analysis
oneway = dtAnalysis << Oneway( Y( :AnalysisValue ), X( :AnalysisType ) );
행운을 빕니다!
제목 : Re : Stacking Just One Column이것은 훌륭한 전략이며 JMP 12에서 완벽하게 작동합니다. JMP 12에서는 Name이 Label 열이므로 Transpose 함수의 레이블 열로 자동으로 throw합니다. 즉, 전략을 단락합니다. 그것이 버그인지는 확실하지 않지만 JMP 13에서 수정 된 것은 기쁩니다. 불행히도, 나는 현재 JMP 13을 가지고있는 유일한 팀입니다 ...
제목 : Re : Stacking Just One Column조건부가없는 또 다른 접근법 (원본 데이터 테이블에 1 행 이상 있다고 가정) :
Names Default To Here(1);
//Example Data Table
dt = Open("$SAMPLE_DATA/Decathlon.jmp");
//col list is list of columns from 1 to n (never an empty list)
colList = {"Javelin", "Pole Vault"};
dtTemp = dt << Transpose(Private, Columns(colList), Label Column Name("AnalysisType"));
stackList = (dtTemp << get column names)[2 :: N Row(dt) + 1];
dtAnalysis = dtTemp << Stack(
Columns(stackList),
Stacked Data Column("AnalysisValue"),
Output Table("Stacked Data")
);
//Run Analysis
oneway = dtAnalysis << Oneway(Y(:AnalysisValue), X(:AnalysisType));
제목 : Re : Stacking Just One Column단 하나의 열만있는 경우 원본 테이블을 엉망으로 만들지 않는 대안이 있습니다. 즉, 원래 테이블을 접근 방식에 적용하는 대신 새 테이블 (예 : Stack ())을 만듭니다.
Names Default To Here(1);
//Example Data Table
dt = Open("$SAMPLE_DATA/Decathlon.jmp");
//col list is list of columns from 1 to n (never an empty list)
colList = {"Javelin", "Pole Vault"};
If(N Items(colList) > 1,
dtAnalysis = dt << Stack(
Columns(colList),
Source Label Column("AnalysisType"),
Stacked Data Column("AnalysisValue"),
Output Table("Stacked Data")
),
dtAnalysis = New Table("Stacked Data",
addrows(N Rows(dt)),
New Column("AnalysisType", character, set each value(colList[1])),
New Column("AnalysisValue", numeric, values(Column(dt, colList[1]) << getvalues))
)
);
//Run Analysis
oneway = dtAnalysis << Oneway(Y(:AnalysisValue), X(:AnalysisType));