<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Salut à tous,
J'ai une question. Ci-joint la table de données.
Fondamentalement, je voudrais calculer la moyenne, stddev et compter en fonction de "vol" colonnes par groupes. J'ai donc d'abord écrit les scripts suivants avec la fonction "Summarize ()":
Résumer (vol_g = By (: groupe),
vol_m_g0 = Moyenne (: vol_0),
vol_m_g1 = Moyenne (: vol_1),
vol_m_g2 = Moyenne (: vol_2),
vol_m_g3 = Moyenne (: vol_3),
vol_m_g4 = Moyenne (: vol_4),
vol_m_g5 = Moyenne (: vol_5),
vol_m_g6 = Moyenne (: vol_6),
vol_sd_g0 = stddev (: vol_0),
vol_sd_g1 = stddev (: vol_1),
vol_sd_g2 = stddev (: vol_2),
vol_sd_g3 = stddev (: vol_3),
vol_sd_g4 = stddev (: vol_4),
vol_sd_g5 = stddev (: vol_5),
vol_sd_g6 = stddev (: vol_6),
vol_n_g0 = Count (: vol_0),
vol_n_g1 = Count (: vol_1),
vol_n_g2 = Count (: vol_2),
vol_n_g3 = Count (: vol_3),
vol_n_g4 = Count (: vol_4),
vol_n_g5 = Count (: vol_5),
vol_n_g6 = Count (: vol_6)
)
Mais il est trop long, je voudrais donc utiliser la boucle "pour" ci-dessous:
Pour (i = 0, i <= 6, i ++,
Résumer (vol_g = By (: groupe),
Eval (Parse (Eval Insert ("vol_m_g ^ i ^ = Moyenne (: vol_ ^ i ^))))),
Eval (Parse (Eval Insert ("volsd_g ^ i ^ = Stddev (: vol_ ^ i ^))))),
Eval (Parse (Eval Insert ("vol_n_g ^ i ^ = Count (: vol_ ^ i ^))"))
)
)
Mais cette version "pour la boucle" ne fonctionne pas. Comment pourrais-je le réviser pour le faire fonctionner?
Merci beaucoup!!
En fonction du niveau général de votre code et de ce qui se passe ensuite, il peut être plus pratique de créer un tableau récapitulatif:
NamesDefaultToHere ( 1 ) ;
dt1 = DataTable ( "Raw_data_new" ) ;
// Obtient une liste de toutes les colonnes dans dt
cols = dt1 << GetColumnNames ( "Chaîne" ) ;
// Supprimer toute colonne que nous ne voulons pas résumer
Pour ( c = NItems ( cols ) , c > = 1 , c - Si ( ! Contient ( cols [ c ] , "vol_" ) , Retirer ( cols , c )) ) ;
// Créer un tableau récapitulatif
dt2 = dt1 << Résumé ( Groupe ( : Groupe ) , Signifier ( EvalList ( cols )) , StdDev ( EvalList ( cols )) , N ( EvalList ( cols ))) ;
Cela devrait fonctionner si vous construisez la totalité de l'expression summary () en tant que chaîne:
Pour ( je = 0 , je <= 6 , je ++,
Eval ( Analyser ( Eval Insert ( "Summarize (vol_g = By (: groupe),
vol_m_g ^ i ^ = moyenne (: vol_ ^ i ^),
volsd_g ^ i ^ = Stddev (: vol_ ^ i ^),
vol_n_g ^ i ^ = Count (: vol_ ^ i ^)) "
)))
) ;