wiki:Recette BilanMigration

Version 10 (modified by cedric, 15 years ago) (diff)

--

Descritption de la structure des objets R a partir des Bilans Migration

Grace à la console R, vous effectuer un Bilan Migration
Dans la boite de dialogue d'EDA il y a des informations qui apparaissent notamment TODO lien a effectuer avec Bilan Migration

  • bilanMigration=get('bilanMigration',envir_stacomi)
  • tableau=get('tableau',envir_stacomi)

L'objet BilanMigration et le dataframe tableau sont des éléments générés par R au cours des traitements Pour les utiliser, dans la console R tapper deux lignes tour à tour, cette commande ne renvoit rien elle assigne à l'objet de gauche (ie bilanMigration) la valeur de l'objet de droite (ie get('bilanMigration',envir_stacomi)). Dans R ce type d'assignation peut se faire à l'aide de la commande <- ou =

bilanMigration=get('bilanMigration',envir_stacomi)
tableau=get('tableau',envir_stacomi)

Pour avoir des informations sur la structure de ces objets on peut utiliser la fonction str de R, mais qu'est ce que str ?

? str

Devrait vous permettre de faire apparaitre une fenêtre d'aide sur l'utilisation de str. A première vue le code est un peu abscon, mais il y a toujours des informations sur l'écriture de la fonction et son utilité, il y a aussi des exemples.

Les objets

str(bilanMigration)

renvoit

Formal class 'BilanMigration' [package ".GlobalEnv"] with 6 slots
  ..@ dc        :Formal class 'RefDC' [package "stacomi"] with 3 slots
  .. .. ..@ dc_selectionne: int 6
  .. .. ..@ ouvrage       : int 1
  .. .. ..@ data          :'data.frame':	10 obs. of  12 variables:
  .. .. .. ..$ dc                  : int [1:10] 5 6 7 8 10 12 15 16 17 18
  .. .. .. ..$ dis_date_creation   :Class 'Date'  num [1:10] 9468 9411 10311 10385 13521 ...
  .. .. .. ..$ dis_date_suppression:Class 'Date'  num [1:10] NA NA 11257 NA NA ...
  .. .. .. ..$ df                  : int [1:10] 1 2 3 4 9 11 13 13 14 14
  .. .. .. ..$ dis_commentaires    : chr [1:10] "Enregistrement video Arzal, Vilaine" "piege de comptage d'Arzal, rive gauche, Vilaine" "Piege de comptage de La Potinais, Oust" "piege de comptage de Malon, Vilaine" ...
  .. .. .. ..$ dif_ouv_identifiant : int [1:10] 1 1 2 3 4 1 5 5 6 6
  .. .. .. ..$ ouv_libelle         : chr [1:10] "Barrage d'Arzal" "Barrage d'Arzal" "Barrage de La Potinais" "Barrage de Malon" ...
  .. .. .. ..$ df_code             : chr [1:10] "ARZAL_DF_ALOSE" "ARZAL_DFANG_GAB" "POTINAIS_DF_ANG" "MALON_DF_ANG" ...
  .. .. .. ..$ dif_localisation    : chr [1:10] "Barrage d'Arzal. Passe à bassins successifs. Dans l'axe du barrage, en rive gauche par rapport aux vannes" "Barrage d'Arzal. Passe à anguilles. Dans l'axe du barrage, en rive gauche par rapport aux vannes, deux rampes à 10 m en amont e"| __truncated__ "Barrage de La Potinais (Oust). En rive droite à 5 m du clapet" "Barrage de Malon (Vilaine). Au centre de l'ouvrage dans l'ancienne pass entre le capet mobile et le seuil déversant" ...
  .. .. .. ..$ dif_orientation     : chr [1:10] "Montee" "Montee" "Montee" "Montee" ...
  .. .. .. ..$ type_df             : chr [1:10] "Passe à bassins successifs" "Rampes à civelles, anguillette, anguilles" "Rampes à civelles, anguillette, anguilles" "Rampes à civelles, anguillette, anguilles" ...
  .. .. .. ..$ type_dc             : chr [1:10] "Analyse visuelle d'image" "Piégeage" "Piégeage" "Piégeage" ...
  ..@ taxons    :Formal class 'RefTaxon' [package ".GlobalEnv"] with 1 slots
  .. .. ..@ data:'data.frame':	1 obs. of  5 variables:
  .. .. .. ..$ tax_code      : int 2038
  .. .. .. ..$ tax_nom_latin : chr "Anguilla anguilla"
  .. .. .. ..$ tax_nom_commun: chr "Anguille d'Europe"
  .. .. .. ..$ tax_ntx_code  : int 15
  .. .. .. ..$ tax_tax_code  : logi NA
  ..@ stades    :Formal class 'RefStades' [package ".GlobalEnv"] with 1 slots
  .. .. ..@ data:'data.frame':	1 obs. of  2 variables:
  .. .. .. ..$ std_code   : chr "AGJ"
  .. .. .. ..$ std_libelle: chr "Anguille jaune"
  ..@ pasDeTemps:Formal class 'PasDeTempsJournalier' [package ".GlobalEnv"] with 4 slots
  .. .. ..@ dateDebut   : POSIXlt[1:9], format: "2009-01-01"
  .. .. ..@ dureePas    : num 86400
  .. .. ..@ nbPas       : num 365
  .. .. ..@ noPasCourant: int 0
  ..@ data      :'data.frame':	365 obs. of  9 variables:
  .. ..$ No.pas            : int [1:365] 0 1 2 3 4 5 6 7 8 9 ...
  .. ..$ Mesure            : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ Calcule           : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ Expert            : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ Ponctuel          : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ Effectif_total    : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  .. ..$ Type_de_quantite  : Factor w/ 1 level "effectif": 1 1 1 1 1 1 1 1 1 1 ...
  .. ..$ Taux_d_echappement: num [1:365] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
  .. ..$ Coef_conversion   : num [1:365] 0 0 0 0 0 0 0 0 0 0 ...
  ..@ duree     : POSIXct[1:365], format: "2009-01-01" "2009-01-02" ...

En fait elle montre une arborescence avec des slots (disons les branches de l'arbre). Les slots sont représentés par @. Par exemple

BilanMigration@dc@data 

Renvoit un tableau, c'est la liste des dispositifs qui a été chargée depuis la base

Les data.frame

str(tableau)

renvoit

'data.frame':	365 obs. of  9 variables:
 $ No.pas            : int  0 1 2 3 4 5 6 7 8 9 ...
 $ Mesure            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Calcule           : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Expert            : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Ponctuel          : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Effectif_total    : num  0 0 0 0 0 0 0 0 0 0 ...
 $ Type_de_quantite  : Factor w/ 1 level "effectif": 1 1 1 1 1 1 1 1 1 1 ...
 $ Taux_d_echappement: num  -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 ...
 $ Coef_conversion   : num  0 0 0 0 0 0 0 0 0 0 ...

Le data.frame est l'un des éléments de R les plus utilisés, c'est une matrice avec des noms. Pour accéder aux éléments au sein d'un tableau il existe plusieurs méthodes équivalentes

tableau$Effectif_total
tableau[,"Effectif_total"]
tableau[,6]

renvoient tous un vecteur correspondant à une des colonnes du tableau,

str(tableau$Effectif_total)
 num [1:365] 0 0 0 0 0 0 0 0 0 0 ... 
tableau[1,]

renvoit la première ligne du tableau

  No.pas Mesure Calcule Expert Ponctuel Effectif_total Type_de_quantite
1      0      0       0      0        0              0         effectif
  Taux_d_echappement Coef_conversion
1                 -1               0

la réindexation des data.frame

C'est vraiment là que R est puissant. Supposez que nous ne voulions afficher que les effectifs de poissons les jours ou il y a du poisson.

tableau[tableau$Effectif_total>0,"Effectif_total"]

tableau$Effectif_total>0 renvoit un vecteur avec des VRAIS et des FAUX. Quand on met un vecteur de vrais / faux qui fait la même dimension de que le nombre de lignes, à gauche dans les crochets du data.frame on fait de la ' réindexation c'est à dire qu'on ne renvoit que les ligne vraies

> tableau[tableau$Effectif_total>0,"Effectif_total"]
  [1]    7.890625   12.625000   12.625000   12.625000   12.625000   12.625000
  [7]   12.625000   12.625000    9.526042    7.666667    7.666667    7.666667
 [13]    7.666667    7.666667    7.666667    7.666667    7.666667    7.666667
 [19]    7.666667    7.666667    4.798077    3.076923    3.076923    3.076923
 [25]    3.076923    3.076923    3.076923    3.076923    3.076923    3.076923
 [31]    3.076923    3.076923    3.076923    2.894918    2.785714    2.785714
 [37]    2.785714    2.785714    2.785714    2.785714    2.785714    2.785714
 [43]    2.785714    2.785714    2.785714    2.785714    2.785714    4.065476
 [49]    4.833333    4.833333    4.833333    4.833333    4.833333   15.875000
 [55]   22.500000   22.500000   22.500000   18.645833   16.333333   16.333333
 [61]   21.437500   24.500000   17.437500   13.200000   13.200000   13.200000
 [67]   13.200000   20.366667   24.666667   24.666667   17.460526   13.136842
 [73]   13.136842   12.589474   10.283459    8.571429    8.571429    8.571429
 [79]    8.571429    8.571429    8.571429   19.151786   25.500000   31.125000
 [85]   34.500000   12.937500   20.416667   32.666667   32.666667   26.833333
 [91]   23.333333   23.333333   72.708333  102.333333  102.333333  181.500000
 [97]  193.791667  172.666667  172.666667  108.500000   37.500000   14.250000
[103]   19.031250   23.250000   23.250000   23.250000  104.760417  153.666667
[109]  153.666667  120.437500  100.500000  100.500000  100.500000   49.562500
[115]   19.000000   16.187500   14.500000  108.770833  165.333333  165.333333
[121]  374.187500  499.500000  409.395833  355.333333  355.333333  423.875000
[127]  433.125000  479.000000  217.791667   37.666667   37.666667  149.281250
[133]  216.250000  216.250000  216.250000  573.906250  788.500000  461.312500
[139]  188.750000  106.125000   84.000000  280.250000  398.000000  168.000000
[145]   30.000000   28.125000   27.000000   27.000000  108.250000  157.000000
[151]  260.437500  322.500000  323.229167  323.666667  323.666667  219.187500
[157]  156.500000   92.437500   54.000000   61.500000   66.000000   66.000000
[163]  116.156250  146.250000  146.250000  146.250000  190.468750  217.000000
[169]  217.000000  128.250000   75.000000   36.562500   13.500000   59.312500
[175]   86.800000   86.800000   86.800000   86.800000  195.050000  260.000000
[181]  303.750000  330.000000  330.000000  329.062500  328.500000  777.875000
[187] 1047.500000  459.270833  106.333333  106.333333  275.187500  376.500000
[193]  242.750000  162.500000  122.500000   98.500000   98.500000   98.500000
[199]   78.187500   56.000000   50.000000   65.625000   75.000000   75.000000
[205]  322.708333  471.333333  471.333333  958.312500 1250.500000 1121.125000
[211] 1043.500000 1070.687500 1087.000000 1928.875000 3427.750000 3525.250000
[217] 2120.062500 1456.500000  792.750000  394.500000  309.187500  258.000000
[223]  154.041667   91.666667   91.666667  208.333333  278.333333  278.333333
[229]  185.625000   97.083333   77.333333   77.333333  393.687500  583.500000
[235]  583.500000  583.500000  900.479167 1090.666667 1090.666667  812.541667
[241]  645.666667  645.666667  858.375000 1612.250000 1988.000000 1988.000000
[247] 1306.541667  897.666667  897.666667  556.000000  171.750000   64.200000
[253]   64.200000   64.200000   64.200000   54.387500   48.500000   34.125000
[259]   25.500000   25.500000   25.500000   21.437500   19.000000   19.000000
[265]   19.000000   19.000000   19.000000   41.343750   54.750000   54.750000
[271]   54.750000   37.614583   27.333333   27.333333   18.843750   13.750000
[277]   13.750000   13.750000   10.498716    8.547945    8.904110    8.651908
[283]    8.714286    8.714286    8.714286    8.714286    8.714286    8.714286
[289]   61.392857   93.000000   93.000000   93.000000   42.025259   11.440415
[295]   11.440415   11.440415    4.528497   18.421053  270.641447  406.500000
[301]  406.500000  406.500000  208.270833   89.333333   89.333333   42.250000
[307]   14.000000   14.000000   14.000000   11.916667   10.666667   10.666667
[313]   14.416667   16.666667   16.666667   22.656250   26.250000   26.250000
[319]   26.250000   33.750000   38.250000   38.250000   38.250000   34.343750
[325]   32.000000   12.000000

A retenir : Nous avons vu trois des principales classes d'objet dans R, les data.frame , les vecteurs , et les objets S4 .