Nous allons de nouveau utiliser les données synthétiques de la production scientifique mondiale de 1996 à 2014 (lien vers le fichier csv
- source : SCImago Journal & Country Rank)
Ce fichier comporte les variables suivantes :
Year
: annéeRank
: rang du pays en terme de production (par rapport au nombre de documents) pour l’année indiquéeCountry
: paysDocuments
: nombre de documents produitsCitable.documents
: nombre de documents citables (articles, reviews et conférences)Citations
: nombre de citations de documents produitsSelf.Citations
: nombre de citations dans un document du même paysCitations.per.Document
: nombre moyen de citationsH.index
: nombre \(h\) d’articles ayant eu au moins \(h\) citations (pour plus d’information : h-index sur Wikipedia)Vous devez produire un tableau de bord (via shinydashboard
- couleur au choix) avec les éléments suivants :
body
(le choix de la taille du TOP devra être placé au dessus de celui-ci)Pour les demandes 1 et 4, il vous sera nécessaire de réaliser des calculs d’aggrégats, et des jointures entre les résultats pour la demande 4.
Pour la demande 2, il vous faudra sélectionner certaines lignes du jeu de données de départ.
Pour la demande 3, il faut calculer une évolution en base 100. Voici comment on peut réaliser cela avec la fonction apply()
. Nous simulons une matrice de taille 10 par 5, suivant une loi normale de moyenne 10 et d’écart-type 2.
df = matrix(rnorm(50, mean = 10, sd = 2), 10, 5)
df
## [,1] [,2] [,3] [,4] [,5]
## [1,] 8.995615 10.179772 9.123820 9.817773 9.796742
## [2,] 10.263062 10.192549 11.528121 13.514751 12.806407
## [3,] 9.842166 9.596732 10.523923 9.724141 6.446449
## [4,] 11.773570 11.479681 11.546809 9.777613 11.245735
## [5,] 10.233943 10.246759 8.371242 8.619971 8.955433
## [6,] 10.637260 9.941367 9.123099 9.556412 12.644462
## [7,] 8.836419 9.222292 8.559557 10.365815 9.273119
## [8,] 11.429065 11.021713 10.461889 10.834647 12.638131
## [9,] 8.349481 8.172372 7.684541 12.130805 10.087558
## [10,] 9.280276 14.620594 10.494152 11.940404 6.242688
Pour avoir l’évolution en base 100 de chaque ligne (imaginons que nous avons des pays décrit par des valeurs sur 5 années), nous utilisons la fonction apply()
sur les lignes (deuxième paramètre égal à 1), avec une fonction définie à l’intérieur, qui va prendre un vecteur en paramètre et qui va renvoyer ce même vecteur divisé par la première valeur, et multiplié par 100. Cela donne le code suivant
b100 = apply(df, 1, function (v) {
return (v / v[1] * 100)
})
b100
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## [1,] 100.0000 100.00000 100.00000 100.00000 100.00000 100.00000 100.00000
## [2,] 113.1637 99.31294 97.50630 97.50383 100.12523 93.45796 104.36685
## [3,] 101.4252 112.32633 106.92690 98.07399 81.79880 85.76550 96.86681
## [4,] 109.1395 131.68342 98.80082 83.04714 84.22923 89.83903 117.30788
## [5,] 108.9057 124.78154 65.49827 95.51678 87.50717 118.86954 104.94206
## [,8] [,9] [,10]
## [1,] 100.00000 100.00000 100.00000
## [2,] 96.43582 97.87880 157.54482
## [3,] 91.53757 92.03615 113.08017
## [4,] 94.79906 145.28813 128.66432
## [5,] 110.57887 120.81659 67.26835
Nous voyons que la matrice résultat est de taille 5 par 10. Pour obtenir la transposée, il faut utiliser la fonction t()
.
b100_OK = t(b100)
b100_OK
## [,1] [,2] [,3] [,4] [,5]
## [1,] 100 113.16371 101.42519 109.13954 108.90574
## [2,] 100 99.31294 112.32633 131.68342 124.78154
## [3,] 100 97.50630 106.92690 98.80082 65.49827
## [4,] 100 97.50383 98.07399 83.04714 95.51678
## [5,] 100 100.12523 81.79880 84.22923 87.50717
## [6,] 100 93.45796 85.76550 89.83903 118.86954
## [7,] 100 104.36685 96.86681 117.30788 104.94206
## [8,] 100 96.43582 91.53757 94.79906 110.57887
## [9,] 100 97.87880 92.03615 145.28813 120.81659
## [10,] 100 157.54482 113.08017 128.66432 67.26835