La fusion de deux trames de données tout en gardant la ligne d'origine afin

Je veux fusionner les deux trames de données en gardant l'original de ligne de commande de l'un d'entre eux (df.2 dans l'exemple ci-dessous).

Voici quelques exemples de données (toutes les valeurs de class colonne sont définis dans les deux trames de données):

df.1 <- data.frame(class = c(1, 2, 3), prob = c(0.5, 0.7, 0.3))
df.2 <- data.frame(object = c('A', 'B', 'D', 'F', 'C'), class = c(2, 1, 2, 3, 1))

Si je fais:

merge(df.2, df.1)

De sortie est:

  class object prob
1     1      B  0.5
2     1      C  0.5
3     2      A  0.7
4     2      D  0.7
5     3      F  0.3

Si j'ajoute sort = FALSE:

merge(df.2, df.1, sort = F)                                                        

Résultat est:

  class object prob
1     2      A  0.7
2     2      D  0.7
3     1      B  0.5
4     1      C  0.5
5     3      F  0.3

Mais ce que je voudrais, c'est:

  class object prob
1     2      A  0.7
2     1      B  0.5
3     2      D  0.7
4     3      F  0.3    
5     1      C  0.5
  • Le problème n'est pas bien défini. Que faire si vous avez, dans le résultat fusionné, plus ou moins de lignes que le df.2?
  • Impossible parce que je utiliser df.2 comme première variable en fonction de fusion...
  • Pas de. c'est à tort. encore mal défini. prenons le cas où vous avez une classe dans le df;2 qui n'existent pas dans le df.1.Par exemple : df.2<-data.frame(object=c('A','B','D','F','C'), class=c(2,1,2,4,1))
  • Ok, peut-être, l'édition est de plus précisé. De toute façon, la PAC réponse fait le travail que je cherchais. Merci de m'aider à améliorer la question.
  • double possible de Comment puis-je les fusionner et de maintenir la ligne de commande d'une entrée?
InformationsquelleAutor DJack | 2013-07-26