솔로 데이터 분석가를위한 R 및 버전 관리


155

내가 존중하는 많은 데이터 분석가는 버전 관리를 사용합니다. 예를 들면 다음과 같습니다.

그러나 git과 같은 버전 제어 시스템을 채택하는 것이 가치가 있는지 평가하고 있습니다.

간단한 개요 : 저는 연구 출판물의 데이터를 분석하기 위해 R을 사용하는 사회 과학자입니다. 나는 현재 R 패키지를 생산하지 않습니다. 프로젝트의 내 R 코드에는 일반적으로 데이터 입력, 정리, 조작, 분석 및 출력 생성을위한 수천 줄의 코드가 포함됩니다. 출판물은 일반적으로 LaTeX를 사용하여 작성됩니다.

버전 관리와 관련하여 내가 읽은 많은 이점이 있지만 솔로 데이터 분석가와 관련이없는 것으로 보입니다.

  • 백업 : 백업 시스템이 이미 설치되어 있습니다.
  • 분기 및 되감기 : 이 작업을 수행해야 할 필요성을 느끼지 못했지만 어떻게 유용한 지 알 수 있습니다 (예 : 동일한 데이터 세트를 기반으로 여러 저널 기사를 준비하는 경우, 매월 업데이트되는 보고서를 준비하는 경우 등). )
  • 공동 작업 : 대부분 데이터를 직접 분석하므로 버전 관리의 공동 작업 이점을 얻지 못합니다.

버전 제어 채택과 관련하여 몇 가지 잠재적 비용이 있습니다.

  • 버전 관리 시스템을 평가하고 배우는 시간
  • 현재 파일 관리 시스템에 비해 복잡성이 증가 할 수 있습니다

그러나 나는 여전히 무언가를 놓치고 있다고 생각합니다. 버전 제어에 대한 일반적인 지침은 데이터 분석가보다 컴퓨터 과학자를 대상으로하는 것으로 보입니다.

따라서 위에 나열된 것과 유사한 상황 에서 특히 데이터 분석가와 관련하여 :

  1. 버전 관리가 그만한 가치가 있습니까?
  2. 버전 관리 채택의 주요 장단점은 무엇입니까?
  3. R로 데이터 분석을위한 버전 제어를 시작하기위한 좋은 전략은 무엇입니까 (예 : 워크 플로우 아이디어, 소프트웨어, 가이드 링크)?

2
이것을 읽어 보셨습니까 : stackoverflow.com/questions/360887/…
Marek

@Marek 그 포스트는 유용하다. 많은 감사합니다. 데이터 분석, R 및 글쓰기 연구와 관련된 특정 문제가 있는지 알고 싶습니다.
Jeromy Anglim

물론 첫 번째 질문에 대한 대답은 "예"입니다. 그러나 일반적으로 어떤 종류 / 크기의 데이터를 처리합니까? 대부분의 CVS 시스템에는 이진 데이터를 저장하는 데 어려움이 있습니다.
Eduardo Leoni

3
당신이보고 싶을 수 있습니다 stackoverflow.com/questions/2286831/...
셰인

@Eduardo 나는 일반 텍스트 (예 : 탭 구분, 고정 너비)와 이진 (데이터베이스, SPSS, Excel 등) 파일을 혼합하여 사용합니다. 데이터는 다양합니다. 일반적인 예 100 행 x 500 열-10,000 x
20-2,000,000

답변:


89

나는 당신의 질문에 대한 대답이 놀랍게 들린다 고 생각합니다. 버전 제어 시스템으로 파일을 관리하는 이점은 그러한 시스템을 구현하는 비용보다 훨씬 큽니다.

제기 한 몇 가지 요점에 대해 자세히 답변하려고 노력하겠습니다.

  • 백업 : 백업 시스템이 이미 설치되어 있습니다.

그렇습니다. 나도 마찬가지입니다. 그러나 작업과 관련된 중요하고 활동적인 파일을 적절하게 추적하기 위해 범용 백업 시스템에 의존하는 적합성에 대해 고려해야 할 몇 가지 질문이 있습니다. 성능 측면에서 :

  • 백업 시스템은 어떤 간격으로 스냅 샷을 찍습니까?
  • 스냅 샷을 작성하는 데 얼마나 걸립니까?
  • 스냅 샷을 만들 때 전체 하드 드라이브를 이미지해야합니까, 아니면 중요한 업데이트를받은 두 파일 만 백업하라는 메시지가 쉽게 들립니까?
  • 백업 시스템이 텍스트 파일에서 한 백업에서 다음 백업으로 변경된 내용을 정확하게 정확하게 보여줄 수 있습니까?

그리고 가장 중요한 것은 :

  • 백업은 몇 개의 위치에 저장됩니까? 컴퓨터와 동일한 물리적 위치에 있습니까?
  • 백업 시스템에서 특정 버전의 단일 파일을 쉽게 복원 할 수 있습니까?

예를 들어, Mac이 있고 Time Machine을 사용하여 컴퓨터의 다른 하드 드라이브에 백업합니다. Time Machine은 이상한 파일을 복구하거나 문제가 발생하면 시스템을 복원하는 데 좋습니다. 그러나 중요한 작업으로 신뢰받는 데 필요한 것은 없습니다.

  • 백업 할 때 Time Machine은 전체 하드 드라이브를 이미지화해야하므로 상당한 시간이 걸립니다. 작업을 계속하면 백업을 시작했을 때의 상태로 파일이 캡처된다는 보장이 없습니다. 또한 첫 번째 백업이 완료되기 전에 저장하려는 다른 지점에 도달 할 수도 있습니다.

  • Time Machine 백업이 저장된 하드 드라이브는 내 컴퓨터에 있습니다. 이로 인해 데이터가 도난, 화재 및 기타 재난에 취약 해집니다.

Git과 같은 버전 제어 시스템을 사용하면 텍스트 편집기에서 저장을 요청하지 않아도 더 이상 특정 파일의 백업을 시작할 수 있으며 파일이 즉시 이미지화되고 저장됩니다. 또한 Git은 분산되어 있으므로 내가 작업하는 각 컴퓨터에는 전체 저장소 사본이 있습니다.

이것은 내 작업을 네 개의 다른 컴퓨터에 반영시키는 것과 관련이 있습니다. 신의 행위만으로도 파일과 데이터가 손상 될 수 있습니다.

  • 분기 및 되감기 : 이 작업을 수행해야 할 필요성을 느끼지 못했지만 어떻게 유용한 지 알 수 있습니다 (예 : 동일한 데이터 세트를 기반으로 여러 저널 기사를 준비하는 경우, 매월 업데이트되는 보고서를 준비하는 경우 등). )

솔로이스트로서 나는 그다지 포크하지 않습니다. 그러나 되감기 옵션을 사용하여 절약 한 시간은 버전 제어 시스템을 배우는 데 많은 시간을 투자했습니다. 당신은 당신이 이것을 할 필요성을 느낀 적이 없다고 말하지만 현재 백업 시스템에서 파일을 되 감는 것이 실제로 고통스럽지 않고 실현 가능한 옵션입니까?

때때로 보고서는 45 분, 1 시간 또는 2 일 전에 더 좋아 보였습니다.

  • 공동 작업 : 대부분 데이터를 직접 분석하므로 버전 관리의 공동 작업 이점을 얻지 못합니다.

그렇습니다. 그러나 프로젝트에서 다른 사람들과 협력하게되면 필수 불가결 한 도구를 배우게됩니다.

  • 버전 관리 시스템을 평가하고 배우는 시간

이것에 대해 너무 걱정하지 마십시오. 버전 제어 시스템은 프로그래밍 언어와 유사합니다. 몇 가지 핵심 개념을 익혀야하며 나머지는 단지 구문상의 설탕입니다. 기본적으로, 처음 배우는 버전 제어 시스템은 다른 시스템으로 전환하는 데 가장 많은 시간을 투자해야하며 새로운 시스템이 핵심 개념을 표현하는 방법을 배우기 만하면됩니다.

인기있는 시스템을 골라보세요!

  • 현재 파일 관리 시스템에 비해 복잡성이 증가 할 수 있습니다

Projects데이터 분석 활동과 관련된 모든 폴더와 파일을 포함하는 하나의 폴더가 있습니까? 그렇다면 버전 제어를 두드리면 파일 시스템의 복잡성이 정확하게 증가합니다 0. 프로젝트에 컴퓨터에 대한 문제가있는 경우 버전 관리를 적용하기 전에 프로젝트를 중앙 집중화해야하므로 파일 관리의 복잡성이 줄어 듭니다 . 이것이 바로 Documents폴더 가있는 이유 입니다.

  1. 버전 관리가 그만한 가치가 있습니까?

예! 그것은 당신에게 큰 실행 취소 버튼을 제공하고 USB 드라이브 손실과 같은 것에 대해 걱정하지 않고 쉽게 기계에서 기계로 작업을 전송할 수 있습니다.

2 버전 관리 채택의 주요 장단점은 무엇입니까?

내가 생각할 수있는 유일한 단점은 파일 크기가 약간 증가한 것입니다. 그러나 최신 버전 제어 시스템은 압축 및 선택적 저장을 통해 놀라운 일을 할 수 있으므로 거의 문제가되지 않습니다.

3 R을 사용한 데이터 분석을위한 버전 관리를 시작하기위한 좋은 전략은 무엇입니까 (예 : 워크 플로우 아이디어, 소프트웨어, 가이드 링크)?

데이터 또는 보고서를 생성하는 파일을 버전 관리하에 유지하십시오. 과 같은 것을 사용하는 경우 파일에서 생성 된 파일이 아닌 파일을 Sweave저장하십시오 . 다시 수집해야 할 경우 원시 데이터를 저장하십시오. 가능하면 데이터를 수집하는 스크립트와 원시 데이터에 대한 변경 사항을 저장하지 않고 데이터를 정리하거나 수정하는 스크립트를 작성하고 저장하십시오..Rnw.tex

버전 관리 시스템을 배우 려면 Git 과이 가이드 를 강력히 추천 합니다.

이 웹 사이트에는 Git을 사용하여 특정 작업을 수행하는 것과 관련된 유용한 팁과 요령도 있습니다.


1
"현재 파일 관리 시스템에 비해 복잡성이 증가 할 수 있습니다"라는 답변에 +1. 버전 관리는 백업 프로세스에서 스냅 샷 지점에 대한 세부적인 제어 수준을 제공하면서 버전 관리에 배치 된 항목의 경우 복잡도를 잠재적으로 줄입니다 (일부 별이 아니라 기능 또는 변경으로 복구하는 데 매우 유용한 설명도 제공함) ).
Christopher Hackett

23

저는 분석 상점에서 9 년 동안 근무했으며 분석 프로젝트의 버전 관리 아이디어를 해당 상점에 소개했습니다. 분명히 버전 관리를 믿는 사람입니다. 그러나 나는 다음과 같은 점을 지적 할 것이다.

  1. 법정에서 사용하기 위해 분석을 수행하는 경우 버전 관리가 적절하지 않을 수 있습니다. 이것이 당신에게 적용되는 것 같지는 않지만, 우리가 만든 모든 스크립트의 모든 버전이 잠재적으로 발견 가능하다는 것을 알기 위해 고객을 매우 긴장하게 만들 것입니다. 여러 참여에서 재사용 된 코드 모듈에는 버전 제어를 사용했지만 그런 이유로 참여 특정 코드에는 버전 제어를 사용하지 않았습니다.
  2. 버전 제어의 가장 큰 이점은 여러 프로젝트에서 재사용 된 미리 준비된 코드 모듈을 저장하는 것입니다. 예를 들어, 특정 인구 조사 PUMS 추출을 처리하는 가장 좋아하는 방법이있을 수 있습니다. 이 코드를 디렉토리로 구성하고 VCS에 넣으십시오. 그런 다음 필요할 때마다 새 프로젝트마다 체크인 할 수 있습니다. 해당 프로젝트에 대해 특정 공통 데이터 세트를 특수 처리하는 경우 특정 프로젝트에 대해 특정 코드의 특정 분기를 작성하는 것이 유용 할 수도 있습니다. 그런 다음 해당 프로젝트를 완료하면 주 코드로 다시 병합 할 특수 코드의 양을 결정하십시오.
  3. 처리 된 데이터를 버전 관리에 넣지 마십시오. 코드 만. 우리의 목표는 항상 내부적으로 처리 된 모든 데이터를 삭제하고, 버튼을 누르고, 보고서의 모든 숫자를 처음부터 다시 생성 할 수 있도록 완전한 스크립트 세트를 유지하는 것이 었습니다. 그것이 데이터에 신비하게 살아있는 오래된 버그가 없는지 확인하는 유일한 방법입니다.
  4. 결과를 실제로 완벽하게 재현 할 수있게하려면 코드를 VCS에 보관하는 것만으로는 충분하지 않습니다. 특정 결과물을 만드는 데 사용 된 모듈 버전을주의 깊게 추적하는 것이 중요합니다.
  5. 소프트웨어에 관해서는 Subversion과 함께 행운을 빕니다. 설정 및 관리가 쉽습니다. git 및 mercurial과 같은 새로운 분산 형 VCS의 매력을 잘 알고 있지만 직접 작업하는 경우 강력한 이점이 있는지 확실하지 않습니다. 반면에, 나는 그것들을 사용하는 것에 대한 부정적인 점도 모른다. 나는 단지 분석 환경에서 그것들과 함께 일하지 않았다.

18

완벽을 기하기 위해 버전 관리 채택에 대한 업데이트를 제공 할 것이라고 생각했습니다.

솔로 데이터 분석 프로젝트의 버전 관리가 매우 유용하다는 것을 알았습니다.

git을 기본 버전 제어 도구로 채택했습니다. 먼저 Eclipse에서 StatET과 함께 Egit을 사용하기 시작했습니다. RStudio와의 통합이 상당히 좋지만 일반적으로 명령 행 인터페이스를 사용합니다.

데이터 분석 프로젝트의 관점에서 버전 제어로 설정 한 경험에 대해 블로그를 작성 했습니다.

게시물에서 언급했듯이 버전 제어를 채택하면 다음과 같은 데이터 분석 프로젝트에 대해 생각하는 데 많은 보조 이점이 있습니다.

  • 소스 파일과 파생 파일의 구별
  • 의존성의 본질 :
    • 코드 요소 간의 종속성
    • 프로젝트 내 파일 간의 종속성
    • 및 저장소 외부의 파일 및 프로그램과의 종속성
  • 리포지토리의 특성 및 리포지토리를 나누는 방법
  • 변경 사항 및 프로젝트 이정표를 커밋하고 문서화하는 특성

2
나는 커맨드 라인 인터페이스로 시작했지만 (알아두면 좋다) R / git 요구에 주로 RStudio를 사용하도록 전환했다. 그것은 내가 원하는 대부분의 것을 제공하지만 때로는 인터페이스에 직접 내장되지 않은 몇 가지 일을하기 위해 터미널을 열어야 할 때가 있습니다.
Dason

17

저는 R과 LaTeX를 사용하여 경제학 연구를하고 항상 작업을 버전 관리하에 두었습니다. 무제한 실행 취소를하는 것과 같습니다. Bazaar는 배우고 사용하는 가장 간단한 방법 중 하나이며 Windows 사용자는 그래픽 사용자 인터페이스 (TortoiseBZR)가 있습니다.

그렇습니다. 다른 사람들과 작업 할 때 버전 관리에 추가적인 이점이 있지만 솔로 프로젝트에서도 많은 의미가 있습니다.


9

지금 당장은 여러분이하는 일을 원하는 코드를 개발하는 것으로 생각할 것입니다. 개정 제어 시스템 사용을 채택한 후에는 저장소에서 레거시를 기록하고 점진적으로 점진적으로 변경하는 것으로 생각합니다. 기분이 좋아집니다.


7

실수를 잡기 위해 안전망을 갖는 것이 큰 일이 될 수 있기 때문에 나는 여전히 당신과 같은 솔로 행위에 대한 버전 제어를 권장합니다.

솔로 Java 개발자로 일했지만 여전히 소스 제어를 사용합니다. 내가 지속적으로 물건을 확인하면 문제가 발생해도 한 시간 이상 잃을 수 없습니다. 걱정없이 실험하고 리팩토링 할 수 있습니다. 문제가 발생하면 항상 마지막 작업 버전으로 롤백 할 수 있기 때문입니다.

그럴 경우 소스 제어를 사용하는 것이 좋습니다. 배우기가 어렵지 않습니다.


7

버전 제어 소프트웨어를 사용해야합니다. 그렇지 않으면 분석을 완벽하게 재현 할 수 없습니다.

결과를 어딘가에 게시하려면 항상 스크립트를 생성 한 시점에 스크립트 상태를 재구성 할 수 있어야합니다. 검토 자 중 한 명이 스크립트 중 하나에서 오류를 발견했다고 가정 해 봅시다. 어떤 결과가 적용되고 어떤 결과가 적용되지 않는지 어떻게 알 수 있습니까?

이런 의미에서 백업 시스템은 하루에 한 번만 수행되므로 다른 백업에 레이블을 적용하지 않기 때문에 충분하지 않으므로 어떤 버전이 어떤 결과에 해당하는지 알 수 없습니다. 그리고 파일을 추가하는 방법과 변경 사항을 커밋하는 방법을 배우면 이미 vc를 배우는 것이 생각보다 간단합니다.


1
당신은 강한 논쟁을합니다. 그러나 공식적인 버전 관리 시스템 없이는 재현 가능한 연구가 가능하다고 생각합니다. 덜 우아하고 덜 유연합니다. 리터럴 프로그래밍 원칙을 사용하여 R 코드를 작성하여 R 출력이 자동으로 최종 문서에 통합되도록합니다. 그런 다음이 최종 제품과 관련된 파일을 저장할 수 있습니다.
Jeromy Anglim

데이터에 전체 분석을 다시 적용하는 데 도움이되지만 이전 결과 중 어떤 것이 오류의 영향을 받았는지 알려주지는 않습니다.
dalloliogm

6

버전 관리가 그만한 가치가 있습니까?

그렇습니다.

버전 관리 채택의 주요 장단점은 무엇입니까?

장점 : 이전에 수행 한 작업을 추적 할 수 있습니다. 당신이 삭제 한 오래된 단락이 필요할 수 있으므로 라텍스에 특히 유용합니다! 컴퓨터가 고장 나거나 새 컴퓨터에서 작업 할 때는 데이터를 즉시 다시 사용할 수 있습니다.

단점 : 몇 가지 설정을 수행해야합니다.

R로 데이터 분석을위한 버전 제어를 시작하기위한 좋은 전략은 무엇입니까 (예 : 워크 플로우 아이디어, 소프트웨어, 가이드 링크)?

그것을 사용하기 시작하십시오. Windows에서 클라이언트 도구로 거북이 SVN을 사용하고 부서에는 svn 서버가 있으며 모든 코드와 데이터를 넣습니다 (예, 데이터도 거기에 있습니다!).


6

조금 뒤로 물러서서 R 패키지 작성의 장점을 배우십시오! 수천 줄의 코드가있는 프로젝트가 있지만 패키지 코드와 같이 구조화되거나 문서화되어 있지 않습니까? 모든 기능에 대한 문서화, 일반적으로 발생하기 어려운 많은 오류에 대한 테스트, 자체 테스트 스위트를 작성하는 기능 등을 포함하여 패키지의 이상에 부합하여 큰 승리를 얻습니다.

패키지를 제작할 분야가 없다면, 올바른 개정 관리를 할 분야가 있는지 잘 모르겠습니다.


3
특히 IT가 아닌 배경에서 온 여정입니다. 나는 지금 git을 사용하고 있으며 훌륭하다. 또한 R 패키지 인프라에 익숙해지기 시작했습니다. 1000 줄의 코드와 관련하여 이것은 종종 대량의 특유한 데이터 처리와 가설 기반 그래픽 및 테이블 생성으로 인해 발생합니다. 경험을 통해 추상화를 쉽게 볼 수 있지만 특정 양의 특유의 코드가 심리적 데이터 세트를 분석하는 것이 의미하는 것의 일부라는 것을 알았습니다. 이것이 ProjectTemplate 패키지와 Sweave의 인기를 설명하는 데 도움이된다고 생각합니다.
Jeromy Anglim

5

위의 정서에 동의하고 예, 버전 관리가 유용하다고 말합니다.

장점;

  • 연구 내용을 기록하고 백업 한 상태로 유지 (태깅)
  • 그것은 당신이 다른 아이디어를 시도하고 그들이 작동하지 않으면 다시 갈 수 있습니다 (분기)
  • 다른 사람과 작업 내용을 공유 할 수 있고 변경 사항을 나와 공유 할 수 있습니다 (지정하지 않았지만 훌륭합니다).
  • 대부분의 버전 관리 시스템을 사용하면 특정 시점 (예 : 게시하기 위해 기사를 제출 한 시점)에서 제어중인 모든 파일에 대해 압축 된 번들을 쉽게 만들 수 있으므로 다른 사람이 기사를 검토 할 때 도움이됩니다. (이 작업을 수동으로 수행 할 수 있지만 버전 제어가 수행 할 때 이러한 프로세스를 구성하는 이유)

툴셋 측면에서 Git을 사용 하고 StatEtEclipse 와 함께 잘 작동하지만 Eclipse 를 반드시 사용할 필요는 없습니다. Eclipse 용 Git 플러그인 이 몇 개 있지만 일반적으로 명령 행 옵션을 사용합니다.


R에는 StatET과 Eclipse를 사용합니다. 아마도 git을 먼저 시도 할 것입니다.
Jeromy Anglim

4

솔로 개발을위한 버전 관리 (모든 종류의)는 다음과 같은 점에서 정말 흥미 롭습니다.

  • 역사를 탐구하고 현재의 작업을 과거의 커밋과 비교
  • 동일한 파일 세트에 대해 다른 버전을 분기 하고 시도

두 가지 기본 버전 제어 기능 중 하나를 수행하지 않는 경우 간단한 백업 도구 만 있으면됩니다.
이러한 기능이 필요하면 백업을받을 수 있습니다 ( git bundle예를 들어).


4

또한 독창적 인 스크립팅 작업을 수행하므로 더 복잡하게 만들지 않고 더 단순하게 유지합니다. 백업은 코딩 작업 과정에 통합되어 있으며 별도의 파일 시스템 절차가 필요하지 않습니다. 모든 버전 관리 시스템의 기본 사항을 배우는 데는 시간이 많이 걸렸습니다.


4

Dropbox에는 "ppor man 's"버전 제어 기능이있어 추가 혜택을 많이받지 않고도 적은 노력을 기울일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.