web-dev-qa-db-fra.com

Différence entre rbind () et bind_rows () dans R

Sur le Web, j'ai trouvé que rbind() est utilisé pour combiner deux trames de données et la même tâche est effectuée par bind_rows() fonction .

Alors je ne comprends pas quelle est la différence entre ces deux fonctions et laquelle est plus efficace à utiliser ??

17
a874

Mis à part quelques différences supplémentaires, l'une des principales raisons d'utiliser bind_rows over rbind consiste à combiner deux trames de données ayant un nombre différent de colonnes. rbind renvoie une erreur dans un tel cas alors que bind_rows affecte "NA" aux lignes de colonnes manquantes dans l'un des blocs de données où la valeur n'est pas fournie par les blocs de données.

Essayez le code suivant pour voir la différence:

a <- data.frame(a = 1:2, b = 3:4, c = 5:6)
b <- data.frame(a = 7:8, b = 2:3, c = 3:4, d = 8:9)

Les résultats des deux appels sont les suivants:

rbind(a, b)
> rbind(a, b)
Error in rbind(deparse.level, ...) : 
  numbers of columns of arguments do not match
library(dplyr)
bind_rows(a, b)
> bind_rows(a, b)
  a b c  d
1 1 3 5 NA
2 2 4 6 NA
3 7 2 3  8
4 8 3 4  9
27
Abhilash Kandwal

Bien que bind_rows() soit plus fonctionnel dans le sens où il combinera des blocs de données avec différents nombres de colonnes (en affectant NA aux lignes avec ces colonnes manquantes), si vous combinez des blocs de données avec le même colonnes, je recommanderais rbind().

rbind() est beaucoup plus efficace en termes de calcul dans les cas où les données que vous combinez sont formatées de la même manière, et cela génère simplement une erreur lorsque le nombre de colonnes est différent. Cela vous fera gagner beaucoup de temps pour les ensembles de données volumineux. Je recommanderais fortement rbind() pour ces situations. Néanmoins, si vos données ont des colonnes différentes, vous devez utiliser bind_rows().

1
kss