This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
La base de donnée CAR
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
Dans cette partie, je demande les 3 premières de cars
Je m’exerce ici par moi-meme
Afficher le script avant le résultat
a<-5
b<--3
a*b
## [1] -15
Pour connaitre la longueur* d’une chaine de caractere
c1 <- "afrique"
c2 <- c("a", "f", "r", "i", "q", "u", "e")
length(c1)
## [1] 1
length(c2)
## [1] 7
Pour obtenir le nombre de caractere, on utilise nchar.
nchar(c1)
## [1] 7
nchar(c2)
## [1] 1 1 1 1 1 1 1
Dans cette partie, il s’agit de manipuler les vecteurs
La fonction c() concatène des scalaires ou des vecteurs:
x <- c(1,4,9)
y <- c(x,2,3)
Affichage de y
y
## [1] 1 4 9 2 3
ze <- c(1.4:7)
ze
## [1] 1.4 2.4 3.4 4.4 5.4 6.4
seq(1.5, 4, by=0.5)
## [1] 1.5 2.0 2.5 3.0 3.5 4.0
le script rep(y,n) répète n fois le vecteur y
rep(y,3) #
## [1] 1 4 9 2 3 1 4 9 2 3 1 4 9 2 3
Une matrice est un tableau à deux dimensions, c’est à dire avec des lignes et des colonnes. Comme pour les vecteurs, toutes les cases d’une matrice doivent contenir des données du même type. Les matrices sont créées avec la fonction matrix() à partir d’un vecteur. On doit fixer le nombre de colonnes ncol et/ou le nombre de lignes nrow.
x <- matrix(c(2,3,5,7,11,13),ncol=2)
x
## [,1] [,2]
## [1,] 2 7
## [2,] 3 11
## [3,] 5 13
Par défaut la matrice est remplie colonne par colonne. Pour remplir ligne par ligne, on ajoute l’argument byrow=T. T=TRUE. Mettre byrow=F revient à ne pas mettre l’option.
y <- matrix(c(2,3,5,7,11,13),ncol=2, byrow=T)
y
## [,1] [,2]
## [1,] 2 3
## [2,] 5 7
## [3,] 11 13
vect <- c(2.5:10.5)
vect
## [1] 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5
vect1 <- c(0:8)
vect1
## [1] 0 1 2 3 4 5 6 7 8
vect2 <- c(9:17)
vect2
## [1] 9 10 11 12 13 14 15 16 17
mat <- matrix(vect,ncol=3,nrow=3)
mat
## [,1] [,2] [,3]
## [1,] 2.5 5.5 8.5
## [2,] 3.5 6.5 9.5
## [3,] 4.5 7.5 10.5
vect[3]
## [1] 4.5
mat[2,1]
## [1] 3.5
mat[,1] #1er colonne
## [1] 2.5 3.5 4.5
mat1 <- mat[2:3, c(1,3)] # extraire sous forme de matrice les lignes 2 à 3 et les colonnes 1 et 3.
mat1
## [,1] [,2]
## [1,] 3.5 9.5
## [2,] 4.5 10.5
mat2 <- mat[c(1,3), 2:3] # extraire sous forme de matrice les lignes 1 et 3 et les colonnes 2 à 3.
mat2
## [,1] [,2]
## [1,] 5.5 8.5
## [2,] 7.5 10.5
vect[vect>8] # extraire les composantes >8
## [1] 8.5 9.5 10.5
vect[(vect>8) | (vect<3)] # extraire les composantes >8 ou <3
## [1] 2.5 8.5 9.5 10.5
vect[(vect>8) & (vect<10)] # extraire les composantes >8 et <10
## [1] 8.5 9.5
apply(mat,1,sum) # Calcul de la somme de la matrice "mat" par ligne. Le 1 designe ligne.
## [1] 16.5 19.5 22.5
apply(mat[c(1,3),], 1, sum) # somme de la premiere et la 3eme ligne
## [1] 16.5 22.5
apply(mat,2,sum) # Calcul de la somme de la matrice A par colonne. Le 2 designe colonne.
## [1] 10.5 19.5 28.5
t(mat) # transposé de la matrice mat
## [,1] [,2] [,3]
## [1,] 2.5 3.5 4.5
## [2,] 5.5 6.5 7.5
## [3,] 8.5 9.5 10.5
cbind(vect1,vect2) # concaténation en colonne;
## vect1 vect2
## [1,] 0 9
## [2,] 1 10
## [3,] 2 11
## [4,] 3 12
## [5,] 4 13
## [6,] 5 14
## [7,] 6 15
## [8,] 7 16
## [9,] 8 17
rbind(vect1,vect2) # concaténation en ligne;
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## vect1 0 1 2 3 4 5 6 7 8
## vect2 9 10 11 12 13 14 15 16 17
diag(vect) # crée une matrice diagonale de diagonale le vecteur
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## [1,] 2.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
## [2,] 0.0 3.5 0.0 0.0 0.0 0.0 0.0 0.0 0.0
## [3,] 0.0 0.0 4.5 0.0 0.0 0.0 0.0 0.0 0.0
## [4,] 0.0 0.0 0.0 5.5 0.0 0.0 0.0 0.0 0.0
## [5,] 0.0 0.0 0.0 0.0 6.5 0.0 0.0 0.0 0.0
## [6,] 0.0 0.0 0.0 0.0 0.0 7.5 0.0 0.0 0.0
## [7,] 0.0 0.0 0.0 0.0 0.0 0.0 8.5 0.0 0.0
## [8,] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 9.5 0.0
## [9,] 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 10.5
vect
## [1] 2.5 3.5 4.5 5.5 6.5 7.5 8.5 9.5 10.5
eigen (mat) # valeurs/vecteurs propres
## eigen() decomposition
## $values
## [1] 2.038309e+01 -8.830852e-01 2.761998e-16
##
## $vectors
## [,1] [,2] [,3]
## [1,] -0.4888581 -0.8610068 0.4082483
## [2,] -0.5732260 -0.1958088 -0.8164966
## [3,] -0.6575939 0.4693892 0.4082483
det(mat) # déterminant
## [1] -1.065814e-14
# solve(mat) # inverse de A
# solve(mat,2) # retourne x tel que Ax = b. décomposition de Choleski :chol (X) retourne R telle que X = R’R où R est une matrice triangulaire supérieure et R’ est la transposée de R;
# décomposition svd : svd(X) retourne (U,D,V) telles que X = UDV’ où U et V sont orthogonales et D est diagonale.
Les opérations + * - / entre 2 vecteurs ou matrices de même dimension sont des opérations terme à terme. Le produit matriciel est obtenu avec %*%.
x <- c(1:5)
y <- c(rep(0,3),rep(1,2))
x*y
## [1] 0 0 0 4 5
x+y
## [1] 1 2 3 5 6
x/y
## [1] Inf Inf Inf 4 5
Attention: Si les vecteurs ne sont pas de même longueur, le plus court est complété automatiquement. Prenons l’exemple ( x =c(1:5);y=c(1,2)) puis faîtes la somme de x+y. Que remarquez-vous?
x <- c(1:5)
y <- c(1,2)
x+y
## Warning in x + y: longer object length is not a multiple of shorter object
## length
## [1] 2 4 4 6 6
Ces fonctions retournent un scalaire : sum() (somme); prod() (produit); mean() (moyenne); var()(variance); max(); min(); length(); ncol(); nrow()…
sum(vect)
## [1] 58.5
sum(mat)
## [1] 58.5
p_ligne <- apply(mat, 1, prod)
p_ligne
## [1] 116.875 216.125 354.375
Ces fonctions retournent un vecteur : cumsum() (sommes cumulées displaystyle(x1, x1 + x2, …,Pn i=1 xi)); cumprod() (produits cumulés); fft() (transformé de Fourier); which.max(); which.min(); which() (fonction qui retourne les indices des coordonnées égales à la valeur TRUE). sort (tri); order; unique. Remarque : sort(x) = x[order(x)].
cumsum(vect)
## [1] 2.5 6.0 10.5 16.0 22.5 30.0 38.5 48.0 58.5
which.max(mat)
## [1] 9
Les facteurs sont des objets très particuliers propres aux analyses statistiques (dans une analyse de variance par exemple). Il est important de déclarer une variable comme « facteur » pour ne pas que la considère comme numérique mais comme une variable qualitative. Un facteur est aussi un objet repartissant les données en groupe.
l <- c(1,2,3)
f <- as.factor(l) # crée le facteur f à trois niveaux 1, 2, 3
is(f)
## [1] "factor" "integer" "oldClass"
## [4] "double" "numeric" "vector"
## [7] "data.frameRowLabels"
# Soit un échantillon de 30 comptables fiscalistes de tous les états et territoire
# d’Australie. Leur état d’origine est spécifié par un vecteur de caractère [?].
state <- c("tas", "sa", "qld", "nsw", "nsw", "nt", "wa", "wa",
"qld", "vic", "nsw", "vic", "qld", "qld", "sa", "tas",
"sa", "nt", "wa", "vic", "qld", "nsw", "nsw", "wa",
"sa", "act", "nsw", "vic", "vic", "act")
state
## [1] "tas" "sa" "qld" "nsw" "nsw" "nt" "wa" "wa" "qld" "vic" "nsw" "vic"
## [13] "qld" "qld" "sa" "tas" "sa" "nt" "wa" "vic" "qld" "nsw" "nsw" "wa"
## [25] "sa" "act" "nsw" "vic" "vic" "act"
# Un facteur est créé avec la fonction factor()
statef <- factor(state)
statef
## [1] tas sa qld nsw nsw nt wa wa qld vic nsw vic qld qld sa tas sa nt wa
## [20] vic qld nsw nsw wa sa act nsw vic vic act
## Levels: act nsw nt qld sa tas vic wa
Pour connaître les niveaux (ou catégories) d’un facteur la fonction levels() peut être utilisée.
levels(statef)
## [1] "act" "nsw" "nt" "qld" "sa" "tas" "vic" "wa"
# Pour continuer l’exemple précédent, supposons que nous ayons des revenus
# des comptables fiscalistes dans un autre vecteur.
revenus <- c(60, 49, 40, 61, 64, 60, 59, 54, 62, 69, 70, 42, 56,
61, 61, 61, 58, 51, 48, 65, 49, 49, 41, 48, 52, 46,
59, 46, 58, 43)
# Pour calculer la moyenne des revenus pour chaque état, nous pouvons
# maintenant utiliser la fonction spéciale tapply()
revenus_moyenne <- tapply(revenus, statef, mean)
revenus_moyenne # donnant un vecteur contenant les moyen avec les composants étiquettés par le nom des groupes (états)
## act nsw nt qld sa tas vic wa
## 44.50000 57.33333 55.50000 53.60000 55.00000 60.50000 56.00000 52.25000
# La fonction tapply() est utilisée pour appliquer une fonction, ici mean
# On peut aussi créer une fonction d’intérêt et l’appliquer en utilisant tapply().
Alphonse, you can also embed plots, for example:
plot(pressure)
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.