rbind deux data.frame préservant l'ordre des lignes et les noms de lignes
J'ai une liste de data.frame
objets que je voudrais ligne ajouter l'un de l'autre, c'est à dire merge(..., all=T)
. Cependant, merge
semble supprimer la ligne des noms de qui j'ai besoin d'être conservé intact. Des idées? Exemple:
x = data.frame(a=1:2, b=2:3, c=3:4, d=4:5, row.names=c("row_1", "another_row1"))
y = data.frame(a=c(10,20), b=c(20,30), c=c(30,40), row.names=c("row_2", "another_row2"))
> merge(x, y, all=T, sort=F)
a b c d
1 1 2 3 4
2 2 3 4 5
3 10 20 30 NA
4 20 30 40 NA
source d'informationauteur Alex
Vous devez vous connecter pour publier un commentaire.
Puisque vous savez que vous n'êtes pas en train de fusionner, mais juste rbind-ing, peut-être quelque chose de ce genre de travail. Il fait usage de
rbind.fill
de "plyr". Pour l'utiliser, spécifiez unlist
de ladata.frame
s que vous voulezrbind
.Une façon est d'utiliser
row.names
de fusion, de sorte que vous obtenez comme une colonne supplémentaire.Edit: En regardant le
merge
fonction avecgetS3method('merge', 'data.frame')
lerow.names
sont clairement définie à NULL (c'est un assez long code, donc je ne vais pas coller ici).et la création d'une nouvelle fonction, disons,
MERGE
travaille en tant que OP a l'intention de cet exemple. Juste une expérimentation.