10
votes

Utilisation de R pour télécharger des données de données Gzipped, extraire et importer des données

Un suivi de Cette question < / a>: Comment puis-je télécharger et décompresser un fichier gzippé à l'aide de r? Par exemple (de Le référentiel d'apprentissage de la machine UCI ), j'ai un Fichier des données d'assurance . Comment puis-je le télécharger en utilisant r?

Voici l'URL de données: http://archive.ics.uci.edu/ml/databases/tic/tic.tar.gz .


0 commentaires

3 Réponses :


2
votes

Veuillez indiquer le contenu de Aide (télécharger.file) pour cela. Si le fichier en question est simplement un fichier gzippé mais lisible, vous pouvez alimenter l'URL complète sur read.table () et plus.


2 commentaires

Ce n'est pas seulement gzippé mais un dossier compressé de fichiers


Néanmoins, c'est un bon conseil que vous pouvez simplement utiliser read.table ('myURL.GZIP') sur des fichiers individuels.



8
votes

Voici un moyen rapide de le faire.

# create download directory and set it
.exdir = '~/Desktop/tmp'
dir.create(.exdir)
.file = file.path(.exdir, 'tic.tar.gz')

# download file
url = 'http://archive.ics.uci.edu/ml/databases/tic/tic.tar.gz'
download.file(url, .file)

# untar it
untar(.file, compressed = 'gzip', exdir = path.expand(.exdir))


5 commentaires

Comme je l'ai dit, c'est pratiquement identique à ce que j'ai écrit Dans cette question à la question - MODULO Le numéro de contenu du fichier TAR vs zip et le fait que vous n'utilisez pas de température appropriée. Diretory. Je pense que toute la question pourrait être fermée comme duplicata.


Dirk, je ne comprends toujours pas comment c'est un duplicata. Unz fonctionne uniquement avec des fichiers ZIP contenant un seul fichier. Donc, la différence entre endommager et unz est raisonnablement significatif dans mon esprit pour mériter une question différente. Est-ce que je manque quelque chose de complètement ici?


Alors maintenant, pour la troisième fois: télécharger un fichier distant, en développant dans un emplacement Temp et travailler sur le contenu est pareil entre les deux réponses. La seule différence mineure est la seule opération que vous utilisez pour extraire le contenu, selon qu'il s'agisse d'une fermeture à glissière ou de tarfil. Est-ce vraiment si difficile à saisir?


Je comprends que très bien Dirk. Mais à cela compte, plusieurs questions devraient être fermées comme dupliquées si tout ce qui importait était le concept sous-jacent derrière les réponses. À mon humble avis, un lecteur souhaitant extraire une archive téléchargée ne serait pas en mesure d'atteindre son objectif sur la base de l'autre question. Je ne veux pas prolonger cette discussion, mais s'il y en a plusieurs autres qui voient cela comme une simple extension et un duplicata, n'hésitez pas à la mettre à la main.


+1. Question rapide: Est-ce que path.expand est nécessaire pour que le code fonctionne ou est-ce simplement la meilleure pratique pour utiliser le chemin complet au lieu de s'appuyer sur R Faire l'expansion de tilde?



20
votes

J'aime l'approche de Ramnath, mais j'utiliserais des fichiers temporisques comme: xxx

list.files () devrait produire quelque chose comme ceci: xxx

que vous pouvez analyser si vous aviez besoin d'automatiser ce processus pour beaucoup de fichiers.


3 commentaires

+1 Nice approche pour automatiser le processus. Peut-être que Télécharger + Unzip devrait être une fonction à part entière car il s'agit d'une opération très courante.


Oui, c'est plus ou moins ce qui était dans ma réponse à la question Zach déjà liée à: Stackoverflow.com/questions/3053833/...


Je pensais que l'utilisation de basename () et de liste.files () valait la peine d'illustrer.