Re: mise à jour d'un fichier chaque fois que la boucle s'exécute (JSL)<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />J'ai téléchargé le fichier de données (j'ai importé dans XL tout en exécutant mon script) que j'ai utilisé dans le script ci-dessus
Mon script est: -
Effacer les globes ();
dt = open ();
k = 5;
collect_means = {}; collect_stdevs = {}; collect_group_std = {};
Pour (l = 1, l <= 2, l ++,
show (k);
Pour (i = 1, i <= 3, i ++, // 3 fois
nt = dt << Sous-ensemble (
Tableau de sortie ("sous-ensemble"),
Taille de l'échantillon (k), // échantillons de 5
)
Résumer (m = Moyenne (: Données), s = Dev std (: Données));
Insérer dans (collect_means, m, 0);
Insérer dans (collect_stdevs, s, 0);
// close ("subset", nosave);
)
Nouvelle table ("Final",
Nouvelle colonne ("signifie", valeurs définies (collect_means)),
Nouvelle colonne ("stddevs", valeurs définies (collect_stdevs)),
// Nouvelle colonne ("Group Std", Formula (col std dev (: moyennes)))
)
// pt << Summary (Group, Std Dev (: means));
pt = table de données ("Final") << résumer (p = std dev (: moyennes));
Insérer dans (collect_group_std, p, 0);
// close ("Final", nosave);
k = k + 5;
)
Nouvelle table ("Groupes", Nouvelle colonne ("Groupe de résumé", Valeurs définies (collect_group_std)));
La feuille "Final" du script ci-dessus doit être mise à jour à chaque fois que la boucle For externe est exécutée. Mais maintenant, la "feuille finale" n'est pas mise à jour et utilise la feuille "finale" précédente (en utilisant la feuille de l'itération précédente.) Peut-on aider à ce que la feuille "finale" soit mise à jour avec de nouvelles valeurs à chaque fois.
Re: mise à jour d'un fichier chaque fois que la boucle s'exécute (JSL)Au fait, utiliser des listes et beaucoup de tables intermédiaires n'est pas très efficace. Ici, toutes les données sont numériques et les sous-ensembles et le tableur final ne semblent pas avoir d’intérêt autre que d’agir en tant que détenteurs temporaires de données. Dans ce cas, je suggérerais d'utiliser plutôt des matrices beaucoup plus efficaces, en particulier pour les grands ensembles de données.
Essayez ceci et comparez les performances avec le script ci-dessus:
Effacer les globes () ;
dt = Tableau de données ( "Exemple de données" ) ;
collect_group_std = [] ;
ks = [] ;
Pour ( k = 5 , k <= dix , k = k + 5 ,
collect_means = [] ;
ks = ks | / k ;
Pour ( je = 1 , je <= 3 , je ++, //3 fois
sous = Indice aléatoire ( N lignes ( dt ) , k ) ;
collect_means = collect_means | / Signifier ( dt : Les données [ sous ] ) ;
Spectacle ( collect_means ) ;
) ;
collect_group_std = collect_group_std | / Std Dev ( collect_means ) ;
) ;
Nouvelle table ( "Groupes" , Nouvelle colonne ( "k" , setvalues ( ks ) ) , Nouvelle colonne ( "Groupe de résumé" , définir des valeurs ( collect_group_std ) ) ) ;
Re: mise à jour d'un fichier chaque fois que la boucle s'exécute (JSL)La fonction de synthèse ne doit pas être utilisée comme un message. Lorsque vous travaillez avec plusieurs tables ayant des noms de colonne identiques, il est également judicieux d'inclure explicitement la table dans son contexte (ed dt: Data au lieu de juste: Data). Et même si je ne suis pas sûr de ce que vous voulez réaliser ici, les listes ne devraient-elles pas collect_means et collect_stdevs seront-ils réinitialisés pour chaque boucle for externe?
Vous trouverez ci-dessous votre code avec quelques modifications mineures.
Effacer les globes () ;
dt = Tableau de données ( "Exemple de données" ) ;
k = 5 ;
collect_group_std = {} ;
Pour ( l = 1 , l <= 2 , l ++,
collect_means = {} ;
collect_stdevs = {} ;
Spectacle ( k ) ;
Pour ( je = 1 , je <= 3 , je ++, //3 fois
NT = dt << Sous-ensemble (
Tableau de sortie ( "Sous-ensemble" ) ,
Taille de l'échantillon ( k ) , // échantillons de 5
) ;
Résumer ( m = Signifier ( NT : Les données ) , s = Std Dev ( NT : Les données ) ) ;
Insérer dans ( collect_means , m , 0 ) ;
Insérer dans ( collect_stdevs , s , 0 ) ;
// Fermer (nt, nosave);
) ;
pt = Nouvelle table ( "Final" ,
Nouvelle colonne ( "veux dire" , définir des valeurs ( collect_means ) ) ,
Nouvelle colonne ( "stddevs" , définir des valeurs ( collect_stdevs ) ) ,
) ;
Résumer ( p = Std Dev ( pt : veux dire ) ) ;
Insérer dans ( collect_group_std , p , 0 ) ;
// Fermer (pt, nosave);
k = k + 5 ;
) ;
Nouvelle table ( "Groupes" , Nouvelle colonne ( "Groupe de résumé" , définir des valeurs ( collect_group_std ) ) ) ;