R和独奏数据分析师的版本控制

问题:

我尊重的许多数据分析师使用版本控制。
例如:

不过,我正在评估采用git等版本控制系统是否值得。
 A brief overview:
我是一位使用R来分析研究出版物数据的社会科学家。
我目前不生产R软件包。
我的一个项目的R代码通常包含几千行代码,用于数据输入,清理,操作,分析和输出生成。
出版物通常使用LaTeX编写。
关于版本控制,我已经阅读了很多好处,但是他们似乎与独奏数据分析师不太相关。

  •  Backup:我已经有一个备份系统。
  •  Forking and rewinding:我从来没有觉得有必要这样做,
       但我可以看到它是如何有用的(例如,你正在准备多个
      期刊文章基于相同的数据集;你正在准备一份报告
      这是每月更新等)
  •  我大部分时间都是
    我自己分析数据,因此,我
    不会得到合作
    版本控制的好处。

采用版本控制还有几个潜在的成本:

  • 有时间去评估和学习一个版本控制系统
  • 可能会增加我当前文件管理系统的复杂性

不过,我仍然有这样的感觉,我错过了一些东西。
有关版本控制的一般指南似乎更多地针对计算机科学家,而不是数据分析师。
因此,在与上面列出的情况类似的情况下具体为in relation to data analysts

  1. 版本控制是值得的吗?
  2. 采用版本控制的主要优点和缺点是什么?
  3. 什么是版本控制入门的好策略
     用R进行数据分析(例如,例子,工作流程的想法,软件,指南的链接)?

回答:

我觉得你的问题的答案是肯定的 – 使用版本控制系统管理你的文件的好处远远大于实现这样一个系统的成本。
我会尽力详细回应你提出的一些观点:

是的,我也是如此。但是,依靠通用备份系统来适当地跟踪与您的工作有关的重要和活跃的文件,还有一些问题需要考虑。在表现方面:

  • 您的备份系统在什么时间间隔拍摄快照?
  • 建立快照需要多长时间?
  • 在拍摄快照时是否需要镜像整个硬盘?还是只能备份刚收到重要更新的两个文件?
  • 您的备份系统能够精确地显示您的文本文件中从一个备份到另一个备份的变化吗?

最重要的是:

  • 备份保存了多少个位置?他们和你的电脑在同一个物理位置吗?
  • 从备份系统恢复给定版本的单个文件有多容易?

例如,有一台Mac,并使用Time Machine备份到我的电脑中的另一个硬盘。时间机器是伟大的恢复奇怪的文件或恢复我的系统,如果事情搞砸了。然而它根本没有什么需要信任我的重要工作:

  • 备份时,Time Machine必须对整个硬盘进行镜像,这需要花费相当长的时间。如果我继续工作,则无法保证我的文件将在我启动备份的状态下被捕获。在第一次备份结束之前,我还可能达到另一个要保存的点。
  • 我的Time Machine备份所保存的硬盘驱动器位于我的机器中,这使我的数据容易遭受盗窃,火灾和其他灾难。

有了像Git这样的版本控制系统,我可以毫不费力地启动特定文件的备份,请求在文本编辑器中进行保存,并且文件被瞬间成像并存储。而且,Git是分布式的,所以我工作的每台计算机都有一个完整的版本库。
这相当于让我的作品反映在四台不同的计算机上 – 没有什么上帝的行为可能会破坏我的文件和数据,在这一点上,我可能不会太在意。

作为一个独奏者,我也没有多少分叉。但是,通过倒带选项节省的时间已经多次回报了我对学习版本控制系统的投资。你说你从来没有觉得有必要这样做,但是在你当前的备份系统下重放任何文件真的是一个无痛,可行的选择?
有时候,报告在一两个小时前的45分钟就好了。

是的,但是如果你最终在一个项目上与他人合作,你会学到一个可能证明是不可或缺的工具。

不要太担心这个。版本控制系统就像程序设计语言 – 它们有一些关键的概念需要学习,其余的只是语法上的糖。基本上,你学习的第一个版本控制系统需要投入大部分时间转换到另一个版本控制系统,只需要学习新系统如何表达关键概念。
选择一个受欢迎的系统,去为它!

您是否有一个文件夹Projects,其中包含与您的数据分析活动相关的所有文件夹和文件?如果是这样,那么掌握版本控制将会增加文件系统的复杂度0。如果您的项目散布在您的计算机上,那么您应该在应用版本控制之前集中它们,这将导致减少管理文件的复杂性,这就是为什么我们有一个Documents文件夹。

是!它给你一个巨大的撤销按钮,并允许您轻松地将工作从机器转移到机器,而不用担心丢失USB驱动器等事情。

2采用版本控制的主要优点和缺点是什么?

唯一我能想到的是文件大小略有增加 – 但现代版本控制系统可以通过压缩和选择性保存来完成绝对令人惊奇的事情,所以这非常不切实际。

3开始使用R进行数据分析的版本控制(例如,示例,工作流程概念,软件,指南链接)是一个很好的策略?

保持在版本控制下生成数据或报告的文件是有选择的。如果您使用的是Sweave之类的内容,请保存您的.Rnw个文件,而不是从中生成的.tex个文件。存储原始数据,如果这将是一个痛苦重新获得。如果可能的话,编写并存储一个获取数据的脚本,另一个清理或修改数据,而不是存储对原始数据的更改。
至于学习版本控制系统,我强烈推荐Git和this guide
这些网站也有一些与Git执行特定操作有关的很好的提示和技巧:

 
 
Code问答: http://codewenda.com/topics/git/
Stackoverflow: R and version control for the solo data analyst

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

34 − 31 =