wiki:Recette BilanMigration

Description de la structure des objets R à partir des Bilans Migration

Retour à Recette StacomiR


Grace à la console R, vous effectuez 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.


1. 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" ...

C'est une classe formelle (un objet S4) qui est utilisée pour programmer stacomi. Tout ce qu'il faut retenir c'est qu'en fait elle montre une arborescence avec des branches (slots). 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


2. 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


3. 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 .

Last modified 8 years ago Last modified on Oct 23, 2016 9:59:59 PM