Plus de robustesse, plus de sécurité, nous avons nommé bind_rows et bind_cols ! Package du tidyverse, {dplyr} regorge d’outils ultra efficaces pour la manipulation de données. Parmi eux, deux petites fonctions qui, à première vue, ne payent pas de mine… et pourtant. bind_rows et bind_cols vous permettent d’effectuer l’équivalent de rbind et cbind mais sont plus fonctionnelles, et affichent des résultats plus propres et exploitables. Commençons par créer deux tableaux. Si nous tentons de les juxtaposer avec la fonction de base rbind, nous aurons une erreur. À l’inverse, bind_rows fera le job, en peuplant les « colonnes manquantes » par des NA. library(dplyr) df1 <- data.frame(a =Read 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 →

Lorsque l’on manipule des jeux de données on est souvent amené à vouloir rajouter des colonnes, rajouter des lignes concaténer des jeux de données… Pour rajouter des colonnes, il faut utiliser la fonction cbind. Il faut que les 2 jeux de données aient le même nombre de ligne.cbind rajoute les colonnes par la droite. deuxcolonnes<-data.frame(matrix(« x »,150,2))names(deuxcolonnes)<-c(« colonne1″, »colonne2 »)deuxcolonnesrescol<-cbind(iris,deuxcolonnes)head(rescol)  Pour rajouter des lignes il faut utiliser la fonction rbind. Contrainte : il faut avoir le même nombre de colonnes et que ces colonnes aient le même nom. deuxlignes<-data.frame(matrix(1,2,5))names(deuxlignes)<-names(iris)deuxlignesreslign<-rbind(deuxlignes,iris)head(reslign)  Il faut tout de même veiller à conserver une homogénéité dans les variables (rajouter des character dans une colonne de numericRead More →

La fonction « by » est très intéressante pour éviter des boucles « for » et ainsi optimiser le code data(iris)summary(iris)by(iris[,-5],iris[,5],mean)  ou encore quant vous voulez effectuer une fonction qui n’est pas définie. by(iris[,-5],iris[,5],function(ob){#mettez ici l’opération que vous voulez faire sur le subsetreturn()})  Le problème peut être que by retourne une liste et que l’on voudrait avoir un tableau de données. C’est ce que fait la fonction do.call, elle prend une liste et effectue une action dessus (ici rbind). data(iris)summary(iris)do.call(rbind,by(iris[,-5],iris[,5],mean) )Read More →