Re: Aktualisierung einer Datei, wenn immer eine Schleife ausgeführt wird (JSL)<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ich habe die Datendatei hochgeladen (die ich während der Ausführung meines Skripts in XL importiert habe), die ich im obigen Skript verwendet habe
Mein Skript ist: -
Globale löschen ();
dt = offen ();
k = 5;
collect_means = {}; collect_stdevs = {}; collect_group_std = {};
Für (l = 1, l <= 2, l ++,
show (k);
Für (i = 1, i <= 3, i ++, // 3 mal
nt = dt << Teilmenge (
Ausgabetabelle ("Subset"),
Probengröße (k), // Proben von 5
);
Zusammenfassen (m = Mittelwert (: Daten), s = Standardabweichung (: Daten));
Einfügen in (collect_means, m, 0);
Einfügen in (collect_stdevs, s, 0);
// close ("subset", nosave);
);
Neue Tabelle ("Finale",
Neue Spalte ("bedeutet", Werte setzen (collect_means)),
Neue Spalte ("stddevs", Werte setzen (collect_stdevs)),
// Neue Spalte ("Group Std", Formel (Col Std Dev (: bedeutet)))
);
// pt << Summary (Group, Std Dev (: bedeutet));
pt = Datentabelle ("Final") << zusammenfassen (p = std dev (: bedeutet));
Einfügen in (collect_group_std, p, 0);
// close ("final", nosave);
k = k + 5;
);
Neue Tabelle ("Gruppen", Neue Spalte ("Zusammenfassungsgruppe", Werte setzen (collect_group_std)));
Das Blatt "Final" im obigen Skript muss jedes Mal aktualisiert werden, wenn die äußere For-Schleife ausgeführt wird. Aber jetzt wird das "Endblatt" nicht aktualisiert und verwendet das vorherige "Endblatt" (unter Verwendung des Blattes aus der vorherigen Iteration). Kann jemand helfen, so dass das Endblatt mit neuen Werten aktualisiert wird.
Re: Aktualisierung einer Datei, wenn immer eine Schleife ausgeführt wird (JSL)Übrigens, das Verwenden von Listen und vielen Zwischentabellen ist nicht sehr effizient. Hier sind alle Daten numerisch und die Subsets und der Final-Tabler scheinen nicht von Interesse zu sein, außer als temporäre Inhaber von Daten zu fungieren. In diesem Fall würde ich vorschlagen, stattdessen Matrizen zu verwenden, die insbesondere für große Datensätze wesentlich effizienter sind.
Versuchen Sie dies und vergleichen Sie die Leistung mit dem obigen Skript:
Globale löschen () ;
dt = Datentabelle ( "Beispieldaten" ) ;
collect_group_std = [] ;
ks = [] ;
Zum ( k = 5 . k <= 10 . k = k + 5 .
collect_means = [] ;
ks = ks | / k ;
Zum ( ich = 1 . ich <= 3 . ich ++ //dreimal
Sub = Zufälliger Index ( N Reihen ( dt ) . k ) ;
collect_means = collect_means | / Bedeuten ( dt : Daten [ Sub ] ) ;
Show ( collect_means ) ;
) ;
collect_group_std = collect_group_std | / Std Dev ( collect_means ) ;
) ;
Neue Tabelle ( "Gruppen" . Neue Spalte ( "k" . Setwerte ( ks ) ) . Neue Spalte ( "Zusammenfassungsgruppe" . Werte setzen ( collect_group_std ) ) ) ;
Re: Aktualisierung einer Datei, wenn immer eine Schleife ausgeführt wird (JSL)Die Zusammenfassungsfunktion sollte nicht als Nachricht verwendet werden. Wenn Sie mit mehreren Tabellen arbeiten, die identische Spaltennamen haben, ist es auch eine gute Idee, die Tabelle explizit in den Kontext aufzunehmen (ed dt: Data statt nur: Data). Und obwohl ich mir nicht genau sicher bin, was Sie hier erreichen wollen, sollten die Listen nicht angezeigt werden collect_means und collect_stdevs werden für jede äußere for-Schleife zurückgesetzt?
Unten ist Ihr Code mit einigen geringfügigen Änderungen.
Globale löschen () ;
dt = Datentabelle ( "Beispieldaten" ) ;
k = 5 ;
collect_group_std = {} ;
Zum ( l = 1 . l <= 2 . l ++
collect_means = {} ;
collect_stdevs = {} ;
Show ( k ) ;
Zum ( ich = 1 . ich <= 3 . ich ++ //dreimal
nt = dt << Teilmenge (
Ausgabetabelle ( "Teilmenge" ) .
Probengröße ( k ) . // Proben von 5
) ;
Zusammenfassen ( m = Bedeuten ( nt : Daten ) . s = Std Dev ( nt : Daten ) ) ;
Einfügen in ( collect_means . m . 0 ) ;
Einfügen in ( collect_stdevs . s . 0 ) ;
// Schließen (nt, nosave);
) ;
pt = Neue Tabelle ( "Finale" .
Neue Spalte ( "meint" . Werte setzen ( collect_means ) ) .
Neue Spalte ( "stddevs" . Werte setzen ( collect_stdevs ) ) .
) ;
Zusammenfassen ( p = Std Dev ( pt : meint ) ) ;
Einfügen in ( collect_group_std . p . 0 ) ;
// Schließen (pt, nosave);
k = k + 5 ;
) ;
Neue Tabelle ( "Gruppen" . Neue Spalte ( "Zusammenfassungsgruppe" . Werte setzen ( collect_group_std ) ) ) ;