1. Grâce à ce formulaire vous pouvez proposer une astuce ou un script sur R.
  2. Votre script doit pouvoir être lancé en l'état. Veuillez penser à :
    • inclure le chargement des "library" nécessaires
    • construire un petit jeu de données si besoin est.
    • commenter les lignes de codes pour en faciliter la compréhension.
  3. Le titre de votre script ou astuce doit être clair et explicite.
  4. Pensez à mettre votre code entre les balises [R] et [/R]; Pour cela, vous pouvez utiliser le bouton

Vous pouvez utiliser vos comptes Facebook, twitter ou google pour vous identifer (google est compatible yahoo, openID...)
L'ideal étant de vous connecter si vous avez un compte utilisateur, ou faire une demande de compte utilisateur si vous n'en avez pas encore.
Créer un compte va vous permettre de pouvoir éditer vos codes et de mettre en avant votre site internet.
Sinon vous pouvez soumettre anonymement en remplissant les champs ci-après.







Choisissez les catégories correspondantes à votre Code:

  • algorithmique
  • Analyse de survie
  • base indispensable
  • bayésien
  • configuration de R
  • exportation de données
  • fonctions utiles
  • graphique
  • importation de données
  • inférence
  • manipulation de données
  • message d'erreur
  • modélisation
  • Non classé
  • optimisation
  • planification
  • programmer avec R
  • regression linéaire
  • Test
  • tidyverse
  • Transformation de données


Votre recherche:

Comment faire rbind et cbind dans le tidyverse ? bind_rows et bind_cols

0
dans manipulation de données, tidyverse
- ça ne sert à rien -- c\'est interessant - (pas encore de vote)
Loading ... Loading ...

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 = LETTERS, 
                    b = LETTERS)
  df2 <- data.frame(c = LETTERS, 
                    d = LETTERS)
  bind(df1, df2)
    Error in match.names(clabs, names(xi)) : 
      les noms ne correspondent pas aux noms précédents
  bind_rows(df1, df2)

Au tour de bind_cols. Pas de soucis dans nos deux exemples du dessus, en base ou avec la fonction de {dplyr}. Testons avec deux nouveaux tableaux.

  df3 <- data.frame(a = LETTERS[1:2], 
                    b = LETTERS[1:2])
  df4 <- data.frame(a = LETTERS[1:2], 
                    b = LETTERS[1:2])
 
  cbind(df3, df4) 
    a b a b
  1 A A A A
  2 B B B B
 
  bind_cols(df3, df4)
    a b a1 b1
  1 A A  A  A
  2 B B  B  B

Le réel plus de bind_cols ici ? La gestion des noms de colonne : alors que la fonction de {base} duplique les noms, la fonction de {dplyr} ajoute un chiffre, afin d’éviter le souci des colonnes dupliquées, qui pourront plus tard mettre en péril une analyse.

Pas encore de commentaire, cliquez ici pour réagir.

Comment coller des colonnes ou des lignes pour obtenir un data.frame ? : cbind.data.frame, rbind.data.frame

0
dans fonctions utiles, manipulation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 3 votes)
Loading ... Loading ...

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.frame

Proposé par Helene F.

Pas encore de commentaire, cliquez ici pour réagir.

Comment rajouter des lignes ou des colonnes dans des jeux de données sous R ? : cbind, rbind

0
dans Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +4 sur 14 votes)
Loading ... Loading ...
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")
deuxcolonnes
 
rescol<-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)
deuxlignes
 
reslign<-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 numeric donnera des NA)




Proposé par Vincent.

Pas encore de commentaire, cliquez ici pour réagir.

Comment utiliser la fonction by de R ?

1
dans Transformation de données
- ça ne sert à rien -- c\'est interessant - (score de +1 sur 1 votes)
Loading ... Loading ...
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 subset
return()
})
  
 

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) )
 
 

Proposé par Guillaume.

1 commentaire. Cliquez ici pour réagir.
Formation logiciel R