151 votes

R et contrôle de version pour l'analyste de données solo

De nombreux analystes de données que je respecte utiliser le contrôle de version. Par exemple:

Cependant, je suis d'évaluer si l'adoption d'un système de contrôle de version comme git serait utile.

Un bref aperçu: Je suis un chercheur en sciences sociales qui utilise R pour analyser les données de publications de recherche. Je ne suis pas actuellement de produire des packages R. Mon R code pour un projet comprend généralement quelques milliers de lignes de code pour l'entrée des données, le nettoyage, la manipulation, l'analyse et la génération de sortie. Les Publications sont généralement écrites à l'aide de LaTeX.

En ce qui concerne le contrôle de version il y a de nombreux avantages que j'ai lu, pourtant, ils semblent être moins pertinentes pour le solo analyste de données.

  • Sauvegarde: j'ai une sauvegarde du système déjà en place.
  • La fourche et le rembobinage: je n'ai jamais ressenti le besoin de le faire, mais je peux voir comment cela pourrait être utile (par exemple, vous préparez plusieurs journal des articles basés sur le même ensemble de données; de la préparation d'un rapport qui est mise à jour mensuellement, etc)
  • Collaboration: la Plupart du temps, je suis l'analyse des données moi-même, donc, je ne pas obtenir la collaboration les prestations de contrôle de version.

Il y a également plusieurs coûts potentiellement impliqués dans l'adoption de contrôle de version:

  • Le temps de l'évaluer et d'en apprendre un système de contrôle de version
  • Une possible augmentation de la complexité sur mon fichier actuel système de gestion de la

Cependant, j'ai toujours le sentiment qu'il me manque quelque chose. Guides généraux sur la version de contrôle semblent être abordée de plus en plus vers des informaticiens que des analystes de données.

Ainsi, spécifiquement en ce qui concerne les données d'analystes dans des circonstances semblables à celles énumérées ci-dessus:

  1. Est version le contrôle de la valeur de l'effort?
  2. Quels sont les principaux avantages et inconvénients de l'adoption de contrôle de version?
  3. Ce qui est une bonne stratégie pour prendre en main le contrôle de version pour l'analyse de données avec R (p. ex., exemples, idées de flux de travail, des logiciels, des liens vers des guides)?

85voto

Sharpie Points 6291

Je sens la réponse à votre question est oui - les avantages de la gestion de vos fichiers avec un système de contrôle de version emportent de loin sur les coûts de la mise en œuvre d'un tel système.

Je vais essayer de répondre en détail certains des points que vous avez soulevé:

  • Sauvegarde: j'ai une sauvegarde du système déjà en place.

Oui, et moi aussi, Cependant, il y a quelques questions à se poser quant à la pertinence de s'appuyer sur un objectif général de système de sauvegarde d'évaluer adéquatement important et actif fichiers relatifs à votre travail. Du côté de la performance:

  • À quelle fréquence est-ce que votre système de sauvegarde de prendre des captures d'écran?
  • Combien de temps faut-il pour construire un instantané?
  • A-t-elle à l'image de l'ensemble de votre disque dur lors de la prise d'un instantané, ou pourrait-il être facilement dit à juste sauvegarder les deux fichiers qui viens de recevoir les mises à jour critiques?
  • Votre système de sauvegarde vous montrer, avec une extrême précision, ce qui a changé dans votre texte des fichiers à partir d'une sauvegarde à l'autre?

Et le plus important:

  • Combien d'emplacements sont les sauvegardes enregistrées? Sont-ils dans le même emplacement physique de votre ordinateur?
  • Comment est-il facile de restaurer une version donnée d'un fichier unique à partir de votre système de sauvegarde?

Par exemple, avoir un Mac et d'utiliser Time Machine pour la sauvegarde sur un autre disque dur dans mon ordinateur. Time Machine est idéal pour la récupération de l'étrange fichier ou la restauration de mon système, si les choses se faire massacrer. Cependant, il n'a tout simplement pas ce qu'il faut pour être en confiance avec mon travail important:

  • Lors de la sauvegarde, Time Machine est à l'image de l'ensemble du disque dur qui prend une quantité considérable de temps. Si je continue à travailler, il n'y a aucune garantie que mon dossier sera capturé dans l'état où il était lorsque j'ai entamé le processus de sauvegarde. J'ai aussi peuvent atteindre un autre point que je voudrais enregistrer avant la première sauvegarde est terminée.

  • Le disque dur où mes sauvegardes Time Machine sont enregistrés est situé dans ma machine, ce qui fait que mes données vulnérables au vol, les incendies et autres catastrophes.

Avec un système de contrôle de version comme Git, je peux lancer une sauvegarde de fichiers spécifiques sans plus d'effort qu'en demandant un enregistrement dans un éditeur de texte et le fichier est numérisés et stockés de manière instantanée. En outre, Git est distribué de sorte que chaque ordinateur que je travaille à la a une copie complète du référentiel.

Cela revient à avoir mon travail en miroir à travers quatre différents ordinateurs - rien de moins qu'une loi de dieu pourrait détruire mes fichiers et des données, à quel point je ne serais probablement pas de soins de trop de toute façon.

  • La fourche et le rembobinage: je n'ai jamais ressenti le besoin de le faire, mais je peux voir comment cela pourrait être utile (par exemple, vous sont en train de préparer plusieurs articles de revue, basée sur le même ensemble de données; de la préparation d'un rapport qui est mis à jour mensuellement, etc)

En tant que soliste, je n'ai pas de fourchette que beaucoup soit. Cependant, le temps que j'ai sauvé en ayant la possibilité de rembobiner a lui seul remboursé mon investissement dans l'apprentissage d'un système de contrôle de version à de nombreuses reprises. Vous dites que vous n'avez jamais ressenti le besoin de le faire - mais a rembobinage aucun fichier dans votre système de sauvegarde vraiment été un indolore, option réalisable?

Parfois, le rapport juste regardé mieux de 45 minutes, une heure ou il y a deux jours.

  • Collaboration: la Plupart du temps, je suis l'analyse des données moi-même, donc, je ne pas obtenir la collaboration les prestations de contrôle de version.

Oui, mais vous apprenez un outil qui peut s'avérer indispensable si vous ne finissent par collaborer avec d'autres personnes sur un projet.

  • Le temps de l'évaluer et d'en apprendre un système de contrôle de version

Ne vous inquiétez pas trop à ce sujet. Systèmes de contrôle de Version sont comme des langages de programmation - ils ont quelques concepts clés qui doivent être appris et le reste n'est que du sucre syntaxique. Fondamentalement, le premier système de contrôle de version vous apprendre, il faudra investir le plus de temps de commutation à un autre nécessite juste d'apprendre comment le nouveau système exprime des concepts clés.

Choisir un système populaire et allez-y!

  • Une possible augmentation de la complexité sur mon fichier actuel système de gestion de la

Avez-vous un dossier de, dire Projects qui contient tous les dossiers et les fichiers liés à vos activités d'analyse de données? Si oui, alors gifles de contrôle de version sur il va augmenter la complexité de votre système de fichiers par exactement 0. Si vos projets sont éparpillés sur votre ordinateur, alors vous devez centraliser avant l'application de contrôle de version et ce sera à la fin la diminution de la complexité de la gestion des fichiers - c'est pourquoi nous avons un Documents le dossier, après tout.

  1. Est version le contrôle de la valeur de l'effort?

Oui! Il vous donne un énorme bouton annuler et vous permet de facilement transférer le travail de machine à machine, sans se soucier de choses comme la perte de votre clé USB.

2 Quels sont les principaux avantages et inconvénients de l'adoption de contrôle de version?

La seule con, je pense, une légère augmentation de la taille du fichier, mais la version moderne des systèmes de contrôle peut faire absolument des choses étonnantes avec la compression sélective et sauver ainsi c'est à peu près un point discutable.

3 Ce qui est une bonne stratégie pour prendre en main le contrôle de version pour l'analyse de données avec R (p. ex., exemples, idées de flux de travail, des logiciels, des liens vers des guides)?

Conserver les fichiers qui génèrent des données ou des rapports sous contrôle de version, d'être sélective. Si vous utilisez quelque chose comme Sweave, stocker vos .Rnw fichiers et non pas l' .tex fichiers qui sont produits à partir d'eux. Stocker des données brutes si il serait fastidieux de ré-acquérir. Si possible, d'écrire et d'enregistrer un script qui récupère les données et un autre qui permet de nettoyer ou de le modifier plutôt que de stocker des modifications aux données brutes.

Comme pour l'apprentissage d'un système de contrôle de version, je recommande fortement de Git et de ce guide .

Ces sites ont aussi quelques bons conseils et astuces liés à l'exécution d'actions spécifiques avec Git:

23voto

Dan Menes Points 2217

J'ai travaillé pendant neuf ans dans l'analytique de la boutique, et introduit l'idée de contrôle de version pour notre analyse des projets de la boutique. Je suis un grand croyant dans le contrôle de version, de toute évidence. Je voudrais faire les points suivants, cependant.

  1. Contrôle de Version peut ne pas être approprié si vous faites de l'analyse pour une utilisation possible dans la cour. Il ne ressemble pas à cela s'applique à vous, mais il aurait rendu à nos clients très nerveux à l'idée de savoir que chaque version de chaque script que l'on avait jamais produite était potentiellement détectable. Nous avons utilisé le contrôle de version pour les modules de code qui ont été réutilisés dans de multiples engagements, mais n'a pas utiliser le contrôle de version pour l'engagement de code spécifiques, pour cette raison.
  2. Nous avons trouvé le plus grand avantage pour le contrôle de version est venu de ranger les conserves de modules de code qui ont été ré-utilisés à travers de multiples projets. Par exemple, vous pourriez avoir un favori particulier la méthode de traitement de certaines Recensement de PUMS extraits. Organiser ce code dans un répertoire et de le mettre dans votre CV. Vous pouvez ensuite vérifier dans chaque nouveau projet, chaque fois que vous en avez besoin. Il peut même être utile de créer des branches spécifiques de certains de code pour le projet, si vous faites un traitement spécial d'un ensemble de données commun pour ce projet. Ensuite, lorsque vous avez terminé avec ce projet, décider de la façon dont beaucoup de votre code spécial à fusionner dans la branche principale.
  3. Ne mettez pas de données traitées dans le contrôle de version. Seul le code. Notre objectif a toujours été d'avoir un ensemble complet de scripts afin que nous puissions supprimer l'ensemble de nos données traitées en interne, appuyez sur un bouton, et ont à chaque numéro pour le rapport régénérées à partir de zéro. C'est la seule façon d'être sûr que vous n'avez pas de vieux bugs vivant sur mystérieusement dans vos données.
  4. Assurez-vous que vos résultats sont vraiment complètement reproductible, il ne suffit pas seulement de garder votre code dans un CV. Il est essentiel soin de garder une trace de la version des modules qui ont été utilisés pour créer toute particulière livrable.
  5. Comme pour les logiciels, j'ai eu de la chance avec Subversion. Il est facile à configurer et à administrer. Je reconnais l'appel de la un nouveau genre distribués Vcs, comme git et mercurial, mais je ne suis pas sûr qu'il y a de fortes avantages si vous travaillez par vous-même. D'autre part, je ne connais pas de points négatifs à leur utilisation, que ce soit--je n'ai pas travaillé avec eux dans un environnement d'analyse.

18voto

Jeromy Anglim Points 8325

Par souci d'exhaustivité, je pensais faire une mise à jour sur mon adoption de contrôle de version.

J'ai trouvé de contrôle de version solo de l'analyse des données des projets très utile.

J'ai adopté git comme mon principal outil de contrôle de version. J'ai d'abord starteed à l'aide de Egit au sein d'Eclipse avec StatET. Maintenant, je suis généralement suffit d'utiliser l'interface de ligne de commande, même si l'intégration avec RStudio est assez bonne.

J'ai blogué sur mon expérience se mettre en place avec le contrôle de version à partir de la perspective de l'analyse des données des projets.

Comme indiqué dans le post, j'ai trouvé l'adoption de contrôle de version a de nombreux avantages secondaires, je pense que sur l'analyse des données des projets notamment en précisant:

  • la distinction entre la source et les fichiers
  • la nature des dépendances:
    • les dépendances entre les éléments de code
    • les dépendances entre les fichiers au sein d'un projet
    • et dépendances avec des fichiers et des programmes externes à l'référentiel
  • la nature d'un référentiel et comment les référentiels doivent être divisés
  • la nature de l'engagement et de documenter les changements et les jalons du projet

17voto

Ana Nelson Points 159

Je fais des recherches économiques en utilisant R et LaTeX, et je mets toujours mon travail sous contrôle de version. C'est comme avoir défaire illimité. Essayez Bazaar, c’est l’un des plus simples à apprendre et à utiliser, et si vous êtes sous Windows, vous disposez d’une interface graphique (TortoiseBZR).

Oui, il y a des avantages supplémentaires au contrôle de version lorsque vous travaillez avec d'autres, mais même sur des projets en solo, c'est très logique.

7voto

dalloliogm Points 2628

Vous devez utiliser un logiciel de contrôle de version, sinon, votre analyse ne sera pas parfaitement reproductible.

Si vous souhaitez publier vos résultats quelque part, vous devriez toujours être en mesure de reconstituer l'état de vos scripts à l'instant que vous avez produit. Disons que l'un de l'examinateur constate une erreur dans l'un de vos scripts: comment voulez-vous savoir laquelle des résultats sont effectuées et qui ne le sont pas?

En ce sens, un système de sauvegarde n'est pas suffisant, car il est probablement le fait qu'une seule fois par jour, et il n'a pas d'appliquer des étiquettes pour les sauvegardes différentes, donc vous ne savez pas quelles versions correspondent aux résultats. Et l'apprentissage d'un vcs est plus simple que ce que vous en pensez, si apprendre comment ajouter un fichier et comment valider les modifications qu'il est déjà assez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X