Die Summe akzeptiert das Format der Liste nicht. Sie fragen sich also, wie Sie dies sonst tun können? Vielen Dank!
Betreff: Alle Spalten mit Schleife summierenIch sollte hinzufügen, dass das Skript dt und N wie folgt initialisiert:
dt = Current Data Table();
N = N Col( dt );
Summieren aller Spalten mit SchleifeHallo zusammen, beim Erstellen eines ziemlich langen Skripts, bei dem ich nicht weiß, welche Spalten in einer bestimmten Tabelle vorhanden sind, da mehrere Tabellen aus verschiedenen Datensätzen erstellt werden. Eine Übersichtstabelle wird mit mehr als 50 Spalten erstellt, manchmal mehr als 70. Ich muss alle Werte in diesen Spalten summieren, kann aber die Summe nicht mit :Name("Spaltenname") angeben, falls einige der Kategorien vorhanden/fehlend sind. Dies ist die Schleife, die ich zu verwenden versuche:
Current Data Table() << New Column( "Total Die",
formula(
For( j = 1, j <= N, j++,
cols = Column( dt, j ) << getname()
);
Sum( cols );
)
);
Die Summe akzeptiert das Format der Liste nicht. Sie fragen sich also, wie Sie dies sonst tun können? Vielen Dank!
SkripterstellungBetreff: Alle Spalten mit Schleife summierenWenn ich das richtig verstehe, können Sie, anstatt eine Schleife zu erstellen, "Tabellen> Zusammenfassung" ausnutzen und JMP die Arbeit erledigen lassen:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
// Get all the numeric columns
cols = dt << getColumnNames("Numeric");
// Get all the column means
dt2 = dt << Summary(Mean(cols));
Ob dies besser ist oder nicht, hängt möglicherweise davon ab, was Ihre JSL sonst noch tut, aber im Allgemeinen ist es gut, JMP-Plattformen zu verwenden, insbesondere wenn es um Zahlen geht, auch um einfache.
Betreff: Alle Spalten mit Schleife summierenWenn Sie Ihr Wissen ein wenig erweitern, denke ich, dass der einfachste Weg, das Problem zu lösen, darin besteht, keine Formelspalte zu erstellen, sondern die Spalte zu erstellen und dann die JSL-Funktionalität mit Matrizen zu verwenden, um die Magie auszuführen.
Names Default To Here( 1 );
dt = Current Data Table();
N = N Col( dt );
dt << New Column( "new" );
For Each Row(
dt:new = Sum( dt[Row(), index(1,ncols(dt)-1)] )
);
Betreff: Alle Spalten mit Schleife summierenVollständige Vektorisierung der Berechnung.
Names Default To Here( 1 );
dt = Current Data Table();
n = N Col( dt );
vals = (dt << Get As Matrix) * J( n, 1, 1);
dt << New Column( "new", "Numeric", "Continuous",
Values( vals )
);
Betreff: Alle Spalten mit Schleife summierenHoppla! Entschuldigung - Es sieht so aus, als ob Sie tatsächlich zeilenweise über Spalten summieren möchten. Sehen, zum Beispiel .
Alternativ, wenn Sie eine Formel möchten:
NamesDefaultToHere(1);
// How many columns in the table?
nc = RandomInteger(2, 20);
// Build the table with some random data
dt = NewTable("Sum Columns", << addMultipleColumns("Col ", nc, Numeric));
for(c=1, c<=nc, c++, Column(dt, c) << setFormula(RandomNormal()));
dt << addRows(10);
dt << runFormulas;
// Start here with the current data table
dt2 = CurrentDataTable();
cols2 = dt2 << getColumnNames("Numeric");
// Add the row-wise sum as a new formula column
afc = Expr(dt2 << newColumn("Sum over Columns", Numeric, Continuous, Formula(Sum(colsTBD))));
SubstituteInto(afc, Expr(colsTBD), Eval(cols2));
afc;
(Dieser Beitrag war ursprünglich unvollständig).