Spaltennamen können nicht multivariat abgerufen werdenHallo,
Ich versuche einen Prozess zu automatisieren. Hier ist eine Übersicht über den Anfangsteil:
-Tabulate
- Mach einen Tisch
-Auf allen fortlaufenden Spalten multivariate ausführen - damit ich eine Korrelationsmatrix erhalten kann
Ich kämpfe auf der Flucht multivariaten Teil. Ich bin nicht sicher, wie ich es dazu bringen soll, die Spalten, die ich will, dort abzulegen. Dies funktioniert, wenn ich die Spaltennamen kenne und sie in diesen Teil stecke:
Multivariate (
Y. ( SPALTENNAMEN HIER ) ,
Da ich die Spaltennamen nicht kenne, hätte ich gerne eine Listenvariable oder etwas, das Platz bietet. Jede Hilfe sehr geschätzt!
Hier ist das Ganze:
dt = data table("wpu10");
tab1= dt<<TABULATE></TABULATE>
Betreff: Spaltennamen können nicht multivariat abgerufen werdenDu warst ziemlich nah dran ... versuch das
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value ) ), Row Table( Grouping Columns( :year ) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous, string );
Multivariate(
Y( Eval List( colnameslist ) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
Betreff: Spaltennamen können nicht multivariat abgerufen werdenDas Argument Y () erwartet einen oder mehrere Spaltenverweise, keine Namen (Zeichenfolgen). Hier ist eine andere Möglichkeit, es zum Laufen zu bringen:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Fitness.jmp" );
col name = dt << Get Column Names( "Continuous" );
col expr = Expr( Y() );
For( i = 1, i <= N Items( col name ), i++,
Insert Into( col expr, Column( col name[i] ) );
);
Eval(
Substitute(
Expr(
Multivariate(
yyy,
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
),
Expr( yyy ),
Name Expr( col expr )
)
);Betreff: Spaltennamen können nicht multivariat abgerufen werdenVielen Dank für die Hilfe, aber ich habe immer noch Probleme. Ich habe das aus meinem Logbuch genommen, falls es hilft:
"Summe (Wert, WPU106, PPI-Rohstoffdaten für Metalle und Metallerzeugnisse - Heizgeräte, nicht saisonbereinigt)",
"Summe (Wert, WPU107, PPI-Rohstoffdaten für Metalle und Metallerzeugnisse - Strukturmetallerzeugnisse, nicht saisonbereinigt)",
Für die Rolle sind mindestens 1 Spalten erforderlich.}
), Multivariate (/ * ### * / Y (Auswertungsliste (colnameslist)),
Schätzmethode ("Pairwise"),
Matrixformat ("Quadrat"),Betreff: Spaltennamen können nicht multivariat abgerufen werdenIch habe versucht, Ihr Solutino anzupassen, konnte es jedoch nicht dazu bringen, dass ich die multivariate Ausgabe erhalte.
Ich denke, das Problem ist, dass ich die Spaltennamen nicht kenne. Ich brauche eine Möglichkeit, die Namen zu erhalten, nachdem ich "dtTab1 = tab1 << makeintodatatable;"
Vielleicht zeigt mir Ihr Code, aber ich habe immer noch Mühe zu sehen, wie. Benötigen Sie die Spaltennamen, in denen Sie yyy haben, oder soll diese Variable die Namen haben?
Betreff: Spaltennamen können nicht multivariat abgerufen werdenIch sehe nicht, wie diese Fehler zusammenhängen. Versuchen Sie, die Tabellennamen als Spaltennamen für Multivariate in der Y-Rolle zu verwenden?
Vergiss das Drehbuch erstmal. Können Sie das Ergebnis interaktiv erzielen? Erhalten Sie also interaktiv die Zusammenfassung mit Tabulate, speichern Sie die Ergebnisse in einer neuen Datentabelle und starten Sie Multivariate?
Spaltennamen wie "Sum (... ) "wird als Funktionsaufruf anstelle eines Spaltenverweises im Eval List () - Aufruf ohne besondere Behandlung interpretiert.
Betreff: Spaltennamen können nicht multivariat abgerufen werdenDas Problem, auf das Sie stoßen, sind die komplexen Namen, die generiert werden, wenn Sie Ihre Tabelle aus der Tabelle "Tabulate" erstellen. Im folgenden Skript habe ich die Tabelle gegen eine Zusammenfassungsplattform ausgetauscht. Dies beseitigt nicht das komplexe Namensproblem, sondern erstellt eine Datentabelle in einer schnellen Aktion, die größtenteils mit der Tabulate-Ausgabe identisch ist. Was das Skript tut, um mit den komplexen Namen umzugehen, ist die Position um jedes Element in der Liste der Spaltennamen der Funktion: Name (), um JMP direkt anzugeben, dass der Inhalt der Funktion als Spaltenname behandelt werden soll. Schließlich wird diese Liste an die Multivariate Plattform übergeben, um die Analyse durchzuführen.
Names Default To Here( 1 );
dt = Data Table( "wpu10" );
/*tab1 = dt << Tabulate(
Add Table( Column Table( Grouping Columns( :series_id, :series_title ), Analysis Columns( :value) ), Row Table( Grouping Columns( :year) ) )
);
dtTab1 = tab1 << makeintodatatable;
dtTab1 << set name( "dtTab1" );*/
// Create the data table directly
dtTab1 = dt << Summary(
Group( :year ),
Sum( :value ),
Subgroup( :series_id, :series_title ),
Freq( "None" ),
Weight( "None" )
);
// Get Column names returns a list
colnameslist = dtTab1 << get column names( Continuous,string);
// Get rid of the Row Number column from the list
colnameslist = remove( colnameslist, 2, 1 );
// Create a new list adding the :Name() function around each column name
// to handle the complex names the summary gave them
thelist={};
For( i = 1, i <= N Items( colnameslist ), i++,
xx = colnameslist[i];
Insert Into( thelist, Parse( Eval Insert( ":Name(\!"^xx^\!")" ) ) );
);
// Run the correlations
dtTab1 << Multivariate(
Y( eval(thelist) ),
Estimation Method( "Pairwise" ),
Matrix Format( "Square" ),
Scatterplot Matrix( Density Ellipses( 1 ), Shaded Ellipses( 0 ), Ellipse Color( 3 ) )
);
Darüber hinaus werde ich unterstützen @markbailey in seiner Bemerkung, Sie interaktiv analysieren zu können. Wenn dies keine Analyse ist, die Sie immer wieder durchführen werden, warum sollten Sie sich die Mühe machen, ein Skript zu erstellen?
Betreff: Spaltennamen können nicht multivariat abgerufen werdenVielen Dank für Ihre Hilfe! Am Ende habe ich alles mit einem Mausklick gemacht. Ich habe heute Morgen versucht, Ihrer letzten Nachricht zu folgen, aber immer noch ein wenig verloren. Die Spaltennamen könnten definitiv ein Problem sein. Wenn ich es manuell mache und zur Tabelle dtTab1 komme, gehe ich zu Analysieren> Multivariate Methoden> Multivariate. JMP denkt, ich möchte es zur Tabelle dt machen. Es ist nicht bis zum zweiten Mal, dass ich durch diesen Prozess gehe. JMP merkt, dass ich es auf dem neuen Tisch tun möchte.
Ich verwende JMP 12, daher weiß ich nicht, ob das auch Probleme verursacht.
Betreff: Spaltennamen können nicht multivariat abgerufen werdenKönnen Sie ein Beispiel Ihrer Datentabelle freigeben?
Betreff: Spaltennamen können nicht multivariat abgerufen werdenJa, was ich angehängt habe, ist die Tabelle, an der ich in dem Code aufgehängt werde, mit dem Sie mir geholfen haben. Ich möchte von dieser Tabelle (dtTab1) zu einer Tabelle mit Korrelationskoeffizienten übergehen - wie die, die unter Analyse> Multivariate Methoden> Multivariate Ausgabe erstellt wurde.
Wie ich bereits erwähnte, ist es ein bisschen funky, wenn ich die Schritte übernehme, um es manuell zu machen. Nachdem dtTab1 erstellt wurde, stammt die Eingabeaufforderung für die Spalten zur Durchführung der multivariaten Analyse aus der Anfangstabelle (alle Indizes in einer Spalte mit dem Namen in einer anderen Spalte). Lass mich kwno wenn du das auch willst)