La fonction outer() permet d’appliquer une fonction à chaque couple de deux vecteurs. La fonction outer() retourne une matrice de la forme M(i, j) = f (xi , yj) où x et y sont des vecteurs et f une fonction de deux variables → f (x, y) #On crée deux vecteurs : A <- sample(5) A B <- c(2,6) outer(A,B, FUN= »+ ») #On ajoute chaque élément de A et de B 2 à 2    On obtient : outer(A,B,FUN= »+ »)      [,1] [,2] [1,]    5    9 [2,]    7   11 [3,]    6   10 [4,]    3    7 [5,]    4    8     Mois <-c(« Janv », »Fev », »Mars ») Année <- 2008:2010 outer(Mois,Année,FUN= »paste », sep= »-« )Read More →

La fonction sweep() permet d’appliquer des opérations sur l’ensemble d’une matrice, sur les lignes ou sur les colonnes. X <- matrix (sample(9),ncol=3) X Y <- matrix (sample(9),ncol=3) Y #Nous créons deux matrices 3×3 remplies par 9 chiffres choisis au hasard   sweep(X,1,3,FUN= »-« ) #Nous soustrayons 3 à tous les élèments de X sweep(X,1,Y,FUN= »-« ) #Nous soustrayons Y à X   Z <- matrix (sample(12),ncol=3)  #Z est une matrice 3×4 A <- matrix(sample(3),ncol=1)    #A est une matrice 1×3 B <- matrix(sample(4),ncol=1)    #B est une matrice 1×4   sweep(Z,1,B,FUN= »+ »)                #On ajoute B à Z en appliquant la somme sur les colonnes sweep(Z,2,A,FUN= »+ »)                #On ajoute A à Z enRead More →

Les fonction colSums() et rowSums() permettent de calculer les sommes respectivement, sur les colonnes et les lignes d’une matrice. Les fonction colMeans() et rowMeans() permettent de calculer les moyennes respectivement, sur les colonnes et les lignes d’une matrice.   m <- matrix(data = c(12,15,14,13,16,18,15,5,14,11,10,17,4,6,17,16), nrow=4, ncol=4) #On crée une matrice à 4 colonnes et 4 lignes   colSums(m)        #On fait la somme sur les colonnes [1] 54 54 52 43   rowSums(m)       #On fait la somme sur les lignes [1] 46 50 56 51   colMeans(m)      #On fait la moyenne sur les colonnes [1] 13.50 13.50 13.00 10.75   rowMeans(m)       #On fait la moyenne surRead More →

Les fonctions table() et xtabs() permettent d’obtenir directement un tableau croisé à partir des colonnes d’un data.frame sechage <- factor(c(rep(« lent »,5),rep(« rapide »,5))) marque <- factor(c(rep(« Mer »,3),rep(« Cim »,3),rep(« vex »,4)))   ciment <- cbind.data.frame(sechage,marque) #On colle les deux variables pour obtenir un data.frame  xtabs(~sechage+marque,data=ciment)  table(ciment$sechage,ciment$marque) #Les fonctions table() et xtabs() sont équivalentes On obtient : table(ciment$sechage,ciment$marque)            Cim Mer vex   lent     2   3   0   rapide   1   0   4  Read More →

La fonction merge() permet de fusionner deux data.frame ayant une variables en commun ainsi que des données complémentaires. age <- c(11,13,14) prenom <- c(« simon », »nicolas », »cyril ») moyenne <- c(12.1,14.2,8.6) classe <- factor(c(« 6eme », »4eme », »3eme »))   eleves <- cbind.data.frame(age,prenom,classe, moyenne) #On colle les données dans un data.frame   nb_elev <- c(29,32,36,33) moy_classe <- c(10.2,11.3,10.6,10.9) caract_classe <- cbind.data.frame(c(« 6eme », »5eme », »4eme », »3eme »),nb_elev,moy_classe) #On colle les données dans un data.frame   names(caract_classe) <- c(« classe », »effectif », »moyenne de la classe ») #On attribue à chaque variable le nom que l’on désire   merge(eleves,caract_classe,by= »classe »)  #On fusionne les données dans un data.frame #La clé commune aux données est la variable « classe » #En effet, la variable commune aux data.frame « eleves » et « caract_classe » estRead More →

La fonction cbind.data.frame() permet de coller des colonnes et d’obtenir un data.frame. sechage <- factor(c(rep(« lent »,5),rep(« rapide »,5))) marque <- factor(c(rep(« Mer »,3),rep(« Cim »,3),rep(« vex »,4))) #On crée deux facteurs que l’on souhaite coller ciment <- cbind.data.frame(sechage, marque) #On colle ces deux facteurs De la même manière, la fonction rbind.data.frame() permet de coller des lignes et d’obtenir un data.frameRead More →

Les fonctions acast() et dcast() associées à la fonction melt(), du package reshape2, permettent d’obtenir une table de contingence. library(reshape2) # On charge le package reshape2 airquality aqm <- melt(airquality, id=c(« Month », « Day »), na.rm=TRUE) #On passe d’un format “Wide” à un format “Long” #Pour un array acast(aqm, Month ~ variable, mean) #On obtient une table de contingence contenant la moyenne de chaque variable en fonction du mois acast(aqm, Month ~ variable, mean, margins = TRUE) #On ajoute les moyennes de chaque variable pour l’ensemble des mois #et les moyennes de chaque mois pour l’ensemble des variables #Pour un data.frame dcast(aqm, Month ~ variable, mean, margins =Read More →

La fonction substr() permet d’extraire une sous-chaine à partir d’une chaine de caractères. Dans cette fonction le premier argument est la chaine de caractères, le deuxième correspond au début de sous-chaine et le troisième à la fin de la sous-chaine que nous voulons extraire. chaine <- « Bonjour tout le monde »  ss_chaine <- substr(chaine,9,12) #La sous-chaine débute au 9ème caractère et se finie au 12ème #Ainsi on extrait le mot « tout »Read More →

La fonction reshape() permet de modifier le format des données en fonction de la variable qu’on associe au paramètre « direction ». df <- data.frame(id = rep(1:4, rep(2,4)),                  visit = I(rep(c(« Before », »After »), 4)),                  x = rnorm(4), y = runif(4)) df # df est un data.frame de dimension 8 X 4 avec des répétitions  # On simplifie le tableau en enlevant les répétitions df2=reshape(df, timevar = « visit », idvar = « id », direction = « wide »)  # Le paramètre « direction » associé à la valeur « long » permet de récupérer le format original des données. reshape(df2, timevar = « visit », idvar = « id », direction = « long »)  Read More →

La fonction ddply(), faisant partie du package plyr, permet d’appliquer une fonction à une ou plusieurs colonnes d’un data.frame en fonction des modalités d’une ou deux variables, et d’ajouter ces données à ce data.frame. library(plyr)        # On charge le package plyr #On construit un data.frame : dfx <- data.frame(     group <- c(rep(‘A’, 8), rep(‘B’, 15), rep(‘C’, 6)),     sex <- sample(c(« M », « F »), size = 29, replace = TRUE),     age <- runif(n = 29, min = 18, max = 54))   ddply(dfx, .(group, sex), mutate,     mean = round(mean(age), 2),     sd = round(sd(age), 2)) # On obtient laRead More →