Combiner une liste de données.tables
Est-t-il une méthode pour combiner une liste de données.les tables dans la R?
J'ai une liste de ~20 données.tables, chacune avec environ 1 million de lignes, et souhaitez les combiner en un seul de données.table avec 20 millions de lignes.
Je fais ça avec
Reduce('rbind', data.table)
mais ça prend du temps.
Tnx!
Vous devez vous connecter pour publier un commentaire.
Voir
?rbindlist
et ces questions connexes (plus facile à trouver quand on sait quoi chercher!) :les données.tableau des questions et des réponses contenant des
rbindlist
À l'aide de
do.call
semble être environ 10 fois plus rapide avec ce composé exemple:Modifier à intégrer Matt réponse
Je ne savais pas
data.table
avaient une fonction spécifique pour cette tâche. Par pour le cours, il est assez rapide. Voici les dates:Pour mon argent, le package plyr de
ldply
est la façon de le faire. Je possède l'avantage que le nom de l'élément de la liste est ajouté à la première colonne, nommé.id
.En outre, une liste de trames de données est souvent la sortie de
tapply
, dans ce cas remplacer tout le toutim avecddply
.Alternatives comprennent
do.call("rbind", mylist)
ou un treillis demake.groups
(n'ont pas été en mesure de trouver celui-ci à récemment).Note: j'ai peut être mal compris la question-j'ai lu
data.frame
au lieu dedata.table
. Ces techniques fonctionnent encore, mais je ne suis pas sûr qu'ils résultent d'undata.table
de tous les temps.setkey
. En règle générale, cela se fait une fois, comme dans une base de données, mais est toujours d'actualité. Unkeyed agrégation est assez rapide, donc généralement pas besoin de clé pour cela.