R et le contrôle de version pour le solo, analyste de données
De nombreux analystes de données que je respecte utiliser le contrôle de version.
Par exemple:
- http://github.com/hadley/
- Voir les commentaires sur le http://permut.wordpress.com/2010/04/21/revision-control-statistics-bleg/
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 de données analyste.
- 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) - la 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 aussi plusieurs coûts potentiellement impliqués dans l'adoption de contrôle de version:
- Le temps d'é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 par rapport à d'analystes de données dans des circonstances semblables à celles énumérées ci-dessus:
- Est la version de contrôle de la valeur de l'effort?
- Quels sont les principaux avantages et inconvénients de l'adoption de contrôle de version?
- 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)?
- Avez-vous lu ceci: stackoverflow.com/questions/360887/...
- Ce post est utile. Merci beaucoup. Je voudrais encore savoir quelles questions précises, le cas échéant, se rapportent à l'analyse des données, R, et l'écriture de la recherche.
- La réponse à votre première question est "oui", bien sûr. Mais quel type/taille de données avez-vous l'habitude de manipuler. La plupart des CV de systèmes ont un moment difficile de stocker des données binaires.
- Vous pouvez aussi regardez ceci: stackoverflow.com/questions/2286831/...
- Je travaille avec un mélange de texte (p. ex., délimités par des tabulations, largeur fixe) et binaire (bases de données, SPSS, Excel, etc.) les fichiers. Les données varient: des exemples Typiques de 100 lignes x 500 colonnes à 10 000 x 20 à 2 000 000 x 20.
- Merci Shane pour me montrer la poste existant sur le contrôle de version et R. j'estime qu'avant de poster.
Vous devez vous connecter pour publier un commentaire.
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é:
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:
Et le plus important:
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.
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.
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.
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!
Vous avez 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 exactement0
. 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 unDocuments
dossier, après tout.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.
Le seul 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.
De garder 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 Git et ce guide à elle.
Ces sites ont aussi quelques bons conseils et astuces liés à l'exécution d'actions spécifiques avec Git:
http://www.gitready.com/
http://progit.org/blog.html
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.
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é au sujet de mon expérience se mettre en place avec le contrôle de version du point de vue 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 dans la façon dont je pense que les données d'analyse des projets, y compris la clarification des
Je ne recherche en économie à l'aide de R et de LaTeX, et j'ai toujours mis mon travail sous contrôle de version. C'est comme avoir des annulations illimitées. Essayez de Bazar, c'est l'un des plus simples à apprendre et à utiliser, et si vous êtes sur Windows, il dispose d'une interface utilisateur graphique (TortoiseBZR).
Oui, il ya des avantages supplémentaires de contrôle de version lorsque vous travaillez avec les autres, mais même sur des projets en solo, il fait beaucoup de sens.
Droit maintenant, vous pensez probablement de votre travail, comme le développement de code qui permettra de faire ce que vous voulez qu'il fasse. Après avoir adopté à l'aide d'un système de contrôle des révisions, vous aurez l'impression de votre travail d'écriture en bas de votre héritage dans le référentiel, et de faire de brillantes variations différentielles elle. Il se sent bien mieux.
Je voudrais encore vous recommandons de contrôle de version pour un acte solitaire comme vous parce que d'avoir un filet de sécurité pour intercepter des erreurs peut être une grande chose à avoir.
J'ai travaillé comme un solo de développeur Java, et j'ai toujours l'utilisation de la source de contrôle. Si je suis la vérification de choses en permanence, je ne peux pas perdre plus d'une heure de travail si quelque chose va mal. Je peux expérimenter et refactoriser sans se soucier, parce que si ça va mal, je peux toujours revenir à ma dernière version de travail.
Si c'est le cas pour vous, je vous recommande d'utiliser le contrôle de source. Il n'est pas difficile à apprendre.
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 produites. 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.
un grand OUI.
avantages: vous pouvez suivre ce que vous avez fait avant. Particulièrement utile pour le latex, comme vous l'avez peut-être besoin un ancien paragraphe qui a été supprimé en vous! Lorsque votre ordinateur se bloque ou vous travaillez sur un nouveau un seul, vous avez vos données à la volée.
inconvénients: vous avez besoin de faire quelques réglages.
Il suffit de commencer à l'utiliser. Je utiliser tortoise SVN sous windows en tant que client de l'outil et de mon ministère a un serveur svn, j'ai mis tout mon code et des données (oui, vous aussi mettre vos données!) il n'.
Un peu de recul tout d'abord, et d'apprendre les avantages de l'écriture de packages R! Vous dites que vous avez des projets avec plusieurs milliers de lignes de code, mais ce ne sont pas structurées ou documentés comme le code du package est? Vous obtenir de grandes victoires avec conforme à l'emballage des idéaux, y compris la documentation pour chaque fonction, des tests pour beaucoup de l'habitude difficile à déceler les erreurs, la facilité pour écrire les suites de test de votre propre etc etc.
Si vous n'avez pas la discipline pour produire un paquet, alors je ne suis pas sûr que vous avez la discipline pour faire le bon contrôle de révision.
Je serai d'accord avec les sentiments ci-dessus et de dire que, Oui, le contrôle de version est utile.
Avantages;
En termes d'outils, j'utilise Git, avec StatEt et Eclipse qui fonctionne bien, même si vous avez certainement n'avez pas à utiliser Eclipse. Il y a quelques Git plugins pour Eclipse, mais j'ai généralement utiliser les options de ligne de commande.
Un Contrôle de version solo de développement (de toute sorte) qui est vraiment intéressant pour:
Si vous ne voyez pas vous-même faire l'une de ces deux fonctionnalités de contrôle de version, un simple outil de sauvegarde peut être tout ce dont vous avez besoin.
Si vous ne avez besoin de ces fonctionnalités, alors vous obtiendrez de sauvegarde ainsi (avec
git bundle
par exemple)J'ai aussi le faire en solo scripting, et je trouve que cela rend les choses plus simples, plutôt que de les rend plus complexe. La sauvegarde est intégré dans le codage de flux de travail et ne nécessite pas un ensemble distinct de système de fichiers des procédures. Le temps qu'il faut pour apprendre les notions de base de tout système de contrôle de version serait certainement du temps bien dépensé.
Dropbox a un "ppor de l'homme" de contrôle de version qui fait partie de la façon dont il pour le peu d'effort avec beaucoup d'avantages supplémentaires.