Le meilleur moyen de simplement stocker des données pour l'analyse statistique dans R [fermé]

12

J'utilise des fichiers texte pour stocker mes données pour R sans aucun problème depuis un certain temps maintenant. Mais pour un projet récent, la taille des fichiers devient trop importante pour être gérée par les fichiers texte bruts. Quelle est la meilleure alternative simple?

Jouet Molto
la source
5
De quelle manière les fichiers texte deviennent-ils trop gros? Avez-vous peur de leur intégrité? Vous ne pouvez pas les ouvrir dans un autre logiciel? Sont-ils trop lents à charger? Trop gros pour votre disque dur (ordinateur portable?)?
Gala du
3
+1 La gestion des données à mesure que les projets se développent est un problème universel dans l'analyse des données (et n'est guère spécifique à R). La préoccupation fondamentale concerne l'intégrité des données plutôt que la taille du fichier: proposer une forme de compression ne fait que masquer cela plutôt que de le résoudre.
whuber
Au-dessus d'une certaine taille, txt ne semble tout simplement pas fonctionner. Je peux ajouter les données supplémentaires au fichier txt et les charger dans R, mais les données supplémentaires ne sont pas dans R. (Btw les données sont assez riches, donc si la compression peut aider un peu, cela ne me mènerait pas aussi loin et je suspect à mesure que mon projet grandit, je vais à nouveau rencontrer les mêmes problèmes.)
Toy Molto
Vous devez nous en dire plus sur vos données, il n'existe pas de "meilleur moyen d'accéder à toutes sortes de données".
zx8754
Voulez-vous dire cela read.tableou read.csvéchouez en silence? Êtes-vous absolument sûr de ne pas avoir plusieurs fichiers et une erreur de codage (mauvais chemin, mauvais nom de fichier, etc.)? Juste pour fixer des idées, vous pouvez également nous donner une idée du nombre de variables et du nombre d'enregistrements que vous traitez approximativement.
Gala du

Réponses:

10

L'approche R standard consiste à utiliser saveet load. Si vous exécutez savevotre bloc de données après l'avoir importé et annoté, vous pouvez le spécifier compress=TRUEet vous serez étonné de la compression et du loadtemps rapide . Cela fonctionne particulièrement bien si la taille de l'objet est inférieure à environ 400 Mo. Sinon, consultez certaines des suggestions ci-dessus, ou le puissant ffpackage de R.

Le Hmiscpaquet a de petits emballages Saveet Loadpour rendre ce qui précède encore plus indolore:

mydata <- csv.get(...)  # Hmisc package, has several options
Save(mydata)   # writes mydata.rda to current working directory
....
Load(mydata)   # reads mydata.rda and creates mydata data frame
Frank Harrell
la source
9

Jetez un œil aux bases de données SQLite3. Chaque base de données est un fichier, il ne nécessite donc pas la configuration d'un serveur de base de données.

Pour créer une base de données:

$ sqlite3 my_db.db3
> CREATE TABLE my_table ( col1 TEXT );

Pour une utilisation avec R, https://gist.github.com/lynaghk/1062939

momeara
la source
+1 L'utilisation d'une base de données réelle est un énorme pas dans la bonne direction.
whuber
Serait-ce l'outil approprié? cran.r-project.org/web/packages/RSQLite/index.html
EngrStudent
Merci, je vais essayer cette route. J'ai aussi regardé MySQL, mais semble être plus que ce dont j'ai besoin.
Toy Molto
4

Il existe un certain nombre d'options génériques.

  • Vous pouvez compresser le texte.
  • Vous pourriez aller binaire sur le texte, pas écrire en ascii

Une bonne compression dépend des données.

Ma supposition (et vous ne l'avez pas spécifié, je dois donc deviner) est que vous cherchez à stocker des données de type tableur dans autre chose que csv (délimité par des virgules).

Un de mes formats préférés (j'adore MatLab) est le hdf.

Voici les informations relatives à HDF concernant R:

Il s'agit d'un format de stockage de données de calcul intensif à haute densité. Cela peut être très rapide et efficace. Il est également (sans surprise) plus dense que le texte zippé.

EngrStudent
la source
3

Les fonctions de lecture de fichiers standard dans R liront désormais facilement et facilement les fichiers compressés. Donc, exécutez simplement une compression gzip simple sur vos données et lisez comme toujours, comme s'il s'agissait de texte brut.

read.table('myfile.gz')
John
la source
Soigné! Je ne le savais pas. Je vous remercie.
EngrStudent