Nur eine Spalte stapelnIch war enttäuscht, als ich herausfand, dass JMP uns daran hindert, nur eine Spalte zu stapeln. Ich verstehe, dass das Stapeln von nur einer Spalte keinen Sinn macht, da es jedoch nur eine Datentransformation ist, ist es sinnvoll, dies tun zu wollen.
Wie auch immer, ich wollte das Gespräch öffnen und sehen, wer besser arbeiten kann als ich. Hier ist meins:
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 ) );
Viel Glück!
Re: Stapeln nur einer SpalteDies ist eine großartige Strategie und funktioniert in JMP 13 einwandfrei. In JMP 12 wird die Spalte Name jedoch als Label-Spalte automatisch als Label-Spalte für die Transpose-Funktion ausgegeben. Nicht sicher, ob dies ein Fehler war, aber ich bin froh, dass er in JMP 13 behoben wurde. Leider bin ich der einzige in meinem Team, der aktuell JMP 13 hat ...
Re: Stapeln nur einer SpalteEin anderer Ansatz ohne Bedingung (unter der Annahme, dass die ursprüngliche Datentabelle> 1 Zeilen hat):
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: Stapeln nur einer SpalteHier ist eine Alternative, die die ursprüngliche Tabelle nicht durcheinander bringt, wenn nur eine Spalte vorhanden ist, dh eine neue Tabelle erstellt (wie Stack ()), anstatt die ursprüngliche Tabelle an den Ansatz anzupassen.
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));