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 .