เวิร์กโฟลว์สำหรับการวิเคราะห์เชิงสถิติและการเขียนรายงาน


186

ไม่มีใครมีภูมิปัญญาในเวิร์กโฟลว์สำหรับการวิเคราะห์ข้อมูลที่เกี่ยวข้องกับการเขียนรายงานที่กำหนดเองหรือไม่? การใช้เคสเป็นแบบนี้:

  1. ลูกค้ารายงานค่าคอมมิชชั่นที่ใช้การวิเคราะห์ข้อมูลเช่นการประมาณประชากรและแผนที่ที่เกี่ยวข้องสำหรับเขตน้ำ

  2. นักวิเคราะห์ดาวน์โหลดข้อมูลบางส่วนรวมข้อมูลและบันทึกผลลัพธ์ (เช่นการเพิ่มคอลัมน์สำหรับประชากรต่อหน่วยหรือการย่อยข้อมูลตามขอบเขตเขต)

  3. นักวิเคราะห์วิเคราะห์ข้อมูลที่สร้างใน (2) เข้าใกล้เป้าหมายของเธอ แต่เห็นว่าต้องการข้อมูลมากขึ้นและกลับไปที่ (1)

  4. ล้างซ้ำจนกระทั่งตารางและกราฟิกตรงตาม QA / QC และทำให้ลูกค้าพึงพอใจ

  5. เขียนรายงานผสมผสานตารางและกราฟิก

  6. ปีหน้าลูกค้าที่มีความสุขกลับมาและต้องการการอัปเดต สิ่งนี้ควรเป็นเรื่องง่ายเหมือนการอัปเดตข้อมูลอัปสตรีมด้วยการดาวน์โหลดใหม่ (เช่นได้รับใบอนุญาตก่อสร้างจากปีที่แล้ว) และกดปุ่ม "คำนวณ" เว้นแต่ว่าข้อกำหนดจะเปลี่ยนไป

ในขณะนี้ฉันเพิ่งเริ่มไดเรกทอรีและเฉพาะกิจมันที่ดีที่สุดที่ฉันสามารถทำได้ ฉันต้องการวิธีการที่เป็นระบบมากขึ้นดังนั้นฉันหวังว่าจะมีใครบางคนคิดออก ... ฉันใช้สเปรดชีต, SQL, ARCGIS, R และ Unix

ขอบคุณ!

PS:

ด้านล่างเป็น Makefile พื้นฐานที่ตรวจสอบการพึ่งพาชุดข้อมูลกลาง (w / .RDataส่วนต่อท้าย) และสคริปต์ ( .Rส่วนต่อท้าย) ต่างๆ Make ใช้ timestamps เพื่อตรวจสอบการขึ้นต่อกันดังนั้นหากคุณคุณtouch ss07por.csvจะเห็นว่าไฟล์นี้ใหม่กว่าไฟล์ / เป้าหมายทั้งหมดที่ขึ้นอยู่กับมันและรันสคริปต์ที่กำหนดเพื่ออัปเดตให้สอดคล้องกัน นี่ยังคงเป็นงานที่อยู่ระหว่างดำเนินการรวมถึงขั้นตอนในการใส่ลงในฐานข้อมูล SQL และขั้นตอนสำหรับการสร้างเทมเพลตภาษาอย่าง sweave โปรดทราบว่า Make พึ่งพาแท็บในไวยากรณ์ของมันดังนั้นอ่านคู่มือก่อนตัดและวาง สนุกและให้ข้อเสนอแนะ!

http://www.gnu.org/software/make/manual/html_node/index.html#Top

R = / home / wsprague / R-2.9.2 / bin / R

persondata.RData: ImportData.R ../../DATA/ss07por.csv ฟังก์ชั่น
   $ R - บันทึก -f ImportData.R

persondata.Munged.RData: MungeData.R persondata.RData Function.R
      $ R - บันทึก -f MungeData.R

report.txt: TabulateAndGraph.R persondata.Munged.RData Functions.R
      $ R - บันทึก -f TabulateAndGraph.R> report.txt


11
พุทโธ่. ผู้ที่เข้ามาที่นี่ระวัง : คำตอบสำหรับคำถามนี้ยอดเยี่ยมเมื่อห้าปีก่อน ตอนนี้พวกเขาทั้งหมดล้าสมัยแล้ว ทุกวันนี้ฉันอยากจะแนะนำอย่างยิ่งต่อการปฏิบัติตามคำตอบใด ๆ ที่นี่ ขณะนี้มีเครื่องมือที่ดีกว่ามาก เป็นจุดเริ่มต้นที่ผมจะอ้างอิงถึงโครงการตัวอย่างการใช้ Makefiles และ Knitr
Konrad Rudolph

R โน้ตบุ๊ค , โปรแกรมควบคุม ODBC , คอมไพล์และLFS คอมไพล์ที่มีอยู่ทั้งหมดที่ส่งสวรรค์สำหรับปัญหานี้
DaveRGP

ฉันขอแนะนำอย่างยิ่งให้ตั้งค่าโครงการตามหลักการที่ระบุไว้เช่นที่นี่ ( github.com/ropensci/rrrpkg ) "compedium การวิจัย" ที่เรียกว่ามาจากสวรรค์เมื่อทำวิทยาศาสตร์ข้อมูลที่ทำซ้ำได้
Kresten

คำตอบ:


195

โดยทั่วไปแล้วฉันแบ่งโครงการเป็น 4 ชิ้น:

  1. load.R
  2. clean.R
  3. func.R
  4. do.R

load.R: ดูแลการโหลดข้อมูลทั้งหมดที่จำเป็น โดยทั่วไปจะเป็นไฟล์สั้นอ่านข้อมูลจากไฟล์ URL และ / หรือ ODBC ขึ้นอยู่กับโครงการ ณ จุดนี้ฉันจะเขียนพื้นที่ทำงานโดยใช้save()หรือเก็บสิ่งต่าง ๆ ไว้ในหน่วยความจำสำหรับขั้นตอนต่อไป

clean.R: นี่คือที่ทุกสิ่งที่น่าเกลียดมีชีวิตอยู่ - ดูแลค่าที่ขาดหายไปรวมกรอบข้อมูลการจัดการค่าผิดปกติ

func.R: มีฟังก์ชั่นทั้งหมดที่จำเป็นสำหรับการวิเคราะห์จริง source()เนื่องจากไฟล์นี้ไม่ควรมีผลข้างเคียงใดนอกจากการโหลดนิยามฟังก์ชัน ซึ่งหมายความว่าคุณสามารถแก้ไขไฟล์นี้และโหลดซ้ำได้โดยไม่ต้องกลับไปทำซ้ำขั้นตอนที่ 1 และ 2 ซึ่งอาจใช้เวลานานในการรันสำหรับชุดข้อมูลขนาดใหญ่

do.R: เรียกใช้ฟังก์ชันที่กำหนดใน func.R เพื่อทำการวิเคราะห์และสร้างแผนภูมิและตาราง

แรงจูงใจหลักของการตั้งค่านี้คือการทำงานกับข้อมูลขนาดใหญ่ซึ่งคุณไม่ต้องการโหลดข้อมูลใหม่ทุกครั้งที่คุณทำการเปลี่ยนแปลงในขั้นตอนถัดไป นอกจากนี้การรักษารหัสการแบ่งส่วนของฉันเช่นนี้หมายความว่าฉันสามารถกลับมาที่โครงการที่ถูกลืมเป็นเวลานานและอ่าน load.R ได้อย่างรวดเร็วและหาข้อมูลที่ฉันต้องการอัปเดตแล้วดูที่ do.R เพื่อทำการวิเคราะห์สิ่งที่ดำเนินการ


12
นั่นเป็นกระบวนการทำงานที่ดีจริงๆ ฉันดิ้นรนกับการออกแบบเวิร์กโฟลว์และเมื่อฉันถามคนรอบตัวฉันพวกเขามักตอบว่า "อะไรเวิร์กโฟลว์? huh?" ดังนั้นฉันคิดว่าพวกเขาไม่ได้คิดมาก ฉันจะใช้โมเดลของ Reichian LCFD
JD Long

1
นี้สวยใกล้กับเวิร์กโฟลว์ของฉันฉันมีมักจะเป็นสคริปต์นำเข้าสคริปต์การวิเคราะห์และการรายงานสคริปต์
kpierce8

4
LCFD: ข้อมูลที่ปนเปื้อนอย่างน้อยโดยทั่วไป
William Doane

2
มีการนำเสนอวิดีโอ + สไลด์ที่ดีโดย Jeromy Anglim ที่รวมขั้นตอนการทำงานนี้ไว้ที่นี่vcasmo.com/video/drewconway/10362
David LeBauer


95

หากคุณต้องการดูตัวอย่างฉันมีโครงการทำความสะอาดและวิเคราะห์ข้อมูลขนาดเล็ก (และไม่เล็กมาก) ออนไลน์ โดยส่วนใหญ่คุณจะพบสคริปต์เพื่อดาวน์โหลดข้อมูลหนึ่งชุดเพื่อทำความสะอาดและอีกสองสามอย่างที่ต้องทำการสำรวจและวิเคราะห์

เมื่อไม่นานมานี้ฉันได้เริ่มเขียนหมายเลขสคริปต์ดังนั้นจึงเห็นได้อย่างชัดเจนว่าควรจะเรียกใช้ลำดับใด (ถ้าฉันรู้สึกว่าแฟนซีฉันจะทำมันเพื่อสคริปต์สำรวจจะเรียกสคริปต์การทำความสะอาดซึ่งจะเรียกสคริปต์ดาวน์โหลดซึ่งแต่ละครั้งทำงานน้อยที่สุดที่จำเป็น - โดยปกติแล้วจะตรวจสอบว่ามีไฟล์เอาต์พุตอยู่ด้วยfile.existsหรือไม่ อย่างไรก็ตามครั้งนี้ดูเหมือนว่ามากเกินไป)

ฉันใช้คอมไพล์สำหรับทุกโครงการของฉัน (ระบบการจัดการซอร์สโค้ด) ดังนั้นมันจึงง่ายต่อการทำงานร่วมกับผู้อื่นดูว่ามีอะไรเปลี่ยนแปลงและย้อนกลับไปเป็นเวอร์ชันก่อนหน้าได้อย่างง่ายดาย

ถ้าฉันทำรายงานอย่างเป็นทางการฉันมักจะแยก R และลาเท็กซ์ออก แต่ฉันมักจะตรวจสอบให้แน่ใจว่าฉันสามารถsourceรหัส R ของฉันในการผลิตรหัสและผลลัพธ์ทั้งหมดที่ฉันต้องการสำหรับรายงาน สำหรับรายงานประเภทต่าง ๆ ที่ฉันทำฉันพบว่าง่ายกว่าและสะอาดกว่าการใช้น้ำยาง


ฉันแสดงความคิดเห็นเกี่ยวกับ Makefiles ข้างต้น แต่คุณอาจต้องการตรวจสอบพวกเขา - มันเป็นภาษาตรวจสอบการพึ่งพาแบบดั้งเดิม นอกจากนี้ - ฉันจะพยายามเรียนรู้ ggplot2 - ดูดีมาก!
forkandwait

ฉันชอบความคิดของการมีวิธีในการระบุการพึ่งพาระหว่างไฟล์ แต่การเรียนรู้ m4 นั้นเป็นการปิดที่ยิ่งใหญ่ ฉันหวังว่าจะมีบางอย่างที่ถูกเขียนขึ้นในภาษาอาร์
แฮดลี่ย์

2
สำหรับการอ้างอิงคุณสามารถทำได้ภายในไฟล์ R แทนที่จะทำอย่างsource("blah.R")นั้นให้ตรวจสอบว่ามีตัวแปรที่จำเป็นอยู่ก่อนหรือไม่: if (!exists("foo")) { source("blah.R") }. สิ่งนี้จะหลีกเลี่ยงการพึ่งพาการอ้างอิงซ้ำหากพวกเขาได้ทำงาน
naught101

17

ฉันเห็นด้วยกับผู้เผชิญเหตุอื่น ๆ : Sweave ยอดเยี่ยมสำหรับการเขียนรายงานด้วย R และการสร้างรายงานใหม่ด้วยผลลัพธ์ที่ได้รับการปรับปรุงนั้นง่ายเหมือนการเรียกฟังก์ชัน Sweave อีกครั้ง มันสมบูรณ์ในตัวเองรวมถึงการวิเคราะห์ข้อมูลและอื่น ๆ และคุณสามารถควบคุมเวอร์ชันไฟล์ทั้งหมด

ฉันใช้ปลั๊กอิน StatET สำหรับ Eclipse สำหรับการพัฒนารายงานและ Sweave ถูกรวมเข้าด้วยกัน (Eclipse รับรู้ถึงการจัดรูปแบบลาเท็กซ์และอื่น ๆ ) บน Windows, มันเป็นเรื่องง่ายที่จะใช้ MikTEX

ฉันยังจะเพิ่มที่คุณสามารถสร้างรายงานที่สวยงามด้วย Beamer การสร้างรายงานปกตินั้นง่ายมาก ฉันรวมตัวอย่างด้านล่างที่ดึงข้อมูลจาก Yahoo! และสร้างแผนภูมิและตาราง (โดยใช้ quantmod) คุณสามารถสร้างรายงานนี้ได้เช่น:

Sweave(file = "test.Rnw")

นี่คือเอกสารของ Beamer:

% 
\documentclass[compress]{beamer}
\usepackage{Sweave}
\usetheme{PaloAlto} 
\begin{document}

\title{test report}
\author{john doe}
\date{September 3, 2009} 

\maketitle

\begin{frame}[fragile]\frametitle{Page 1: chart}

<<echo=FALSE,fig=TRUE,height=4, width=7>>=
library(quantmod)
getSymbols("PFE", from="2009-06-01")
chartSeries(PFE)
@

\end{frame}


\begin{frame}[fragile]\frametitle{Page 2: table}

<<echo=FALSE,results=tex>>=
library(xtable)
xtable(PFE[1:10,1:4], caption = "PFE")
@

\end{frame}

\end{document}

6
อย่าเชื่อว่ารายงาน Sweave สามารถทำซ้ำได้จนกว่าคุณจะทดสอบในเครื่องที่สะอาด มันง่ายที่จะมีการพึ่งพาภายนอกโดยนัย
John D. Cook

16

ฉันแค่อยากจะเพิ่มในกรณีที่ทุกคนพลาดมันที่มีการโพสต์ที่ยอดเยี่ยมในบล็อก learnr เกี่ยวกับการสร้างรายงานซ้ำกับแพคเกจชงเจฟฟรีย์ฮอร์เนอร์ แมตต์และเควินทั้งคู่กล่าวถึงการชงข้างต้น ฉันไม่ได้ใช้มันมากนัก

รายการดังกล่าวเป็นไปตามเวิร์กโฟลว์ที่ดีดังนั้นจึงควรค่าแก่การอ่าน:

  1. เตรียมข้อมูล
  2. จัดทำเทมเพลตรายงาน
  3. จัดทำรายงาน

การสร้างรายงานจริง ๆ แล้วเมื่อสองขั้นตอนแรกเสร็จสมบูรณ์นั้นง่ายมาก:

library(tools)
library(brew)
brew("population.brew", "population.tex")
texi2dvi("population.tex", pdf = TRUE)

ในการแก้ไขข้อผิดพลาดทางไวยากรณ์เล็ก ๆ ฉันทำที่อยู่ wordpress.com ผิด ดังนั้นลิงก์ที่ถูกต้องคือ learnr.wordpress.com/2009/09/09/ …
Learnr

14

สำหรับการสร้างรายงานที่กำหนดเองฉันพบว่ามีประโยชน์ในการรวมเคล็ดลับที่มีอยู่มากมายที่แนะนำไว้ที่นี่

การสร้างรายงาน: กลยุทธ์ที่ดีสำหรับการสร้างรายงานเกี่ยวข้องกับการผสมผสานของ Sweave, make และ R

บรรณาธิการ: บรรณาธิการที่ดีสำหรับการเตรียมเอกสาร Sweave ประกอบด้วย:

  • StatET และ Eclipse
  • Emacs และ ESS
  • Vim และ Vim-R
  • สตูดิโอ R

การจัดระเบียบรหัส: ในแง่ของการจัดระเบียบรหัสฉันพบว่ามีสองกลยุทธ์ที่มีประโยชน์:


7

ฉันใช้Sweaveสำหรับด้านการจัดทำรายงาน แต่ฉันก็ได้ยินเกี่ยวกับแพคเกจการชงด้วย - แม้ว่าฉันจะยังไม่ได้ดูเลย

โดยพื้นฐานแล้วฉันมีแบบสำรวจจำนวนหนึ่งที่ฉันสร้างสถิติสรุป การสำรวจเดียวกันรายงานเดียวกันทุกครั้ง ฉันสร้างเทมเพลต Sweave สำหรับรายงาน (ซึ่งใช้เวลาทำงานเล็กน้อย) แต่เมื่องานเสร็จสิ้นฉันมีสคริปต์ R แยกต่างหากที่ช่วยให้ฉันชี้ให้เห็นข้อมูลใหม่ ฉันกด "ไป" Sweave ทิ้งไฟล์. tex ที่ได้คะแนนน้อยและฉันรันสคริปต์ Python เล็กน้อยเพื่อ pdflatex พวกเขาทั้งหมด บรรพบุรุษของฉันใช้เวลาประมาณ 6 สัปดาห์ในแต่ละปีสำหรับรายงานเหล่านี้ ฉันใช้เวลาประมาณ 3 วัน (ส่วนใหญ่เกี่ยวกับข้อมูลการทำความสะอาดตัวละครหลบหนีเป็นอันตราย)

เป็นไปได้มากว่าตอนนี้มีแนวทางที่ดีกว่า แต่ถ้าคุณตัดสินใจที่จะไปเส้นทางนี้ให้ฉันรู้ - ฉันตั้งใจจะวางแฮ็ก Sweave ของฉันและนั่นจะเป็นการเตะที่ดีในกางเกง ดังนั้น.


ชอบที่จะเห็น "Sweave hacks" เหล่านี้บ้าง มันทำให้ฉันปวดหัว!
Brandon Bertelsen

7

ฉันจะแนะนำสิ่งที่อยู่ในการจัดเรียงที่แตกต่างกันของทิศทางจากผู้ส่งอื่น ๆ ขึ้นอยู่กับความจริงที่ว่าคุณถามเฉพาะเกี่ยวกับขั้นตอนการทำงานของโครงการมากกว่าเครื่องมือ สมมติว่าคุณค่อนข้างมีความสุขกับรูปแบบการผลิตเอกสารของคุณดูเหมือนว่าความท้าทายของคุณอาจเป็นประเด็นที่เกี่ยวข้องกับการติดตามรุ่นการจัดการสินทรัพย์และกระบวนการตรวจสอบ / เผยแพร่

หากเสียงที่ถูกต้องผมจะแนะนำให้มองเป็นบัตรโดยสาร / แหล่งที่มาของเครื่องมือการจัดการ / เอกสารแบบบูรณาการเช่นRedmine การเก็บสิ่งประดิษฐ์ของโครงการที่เกี่ยวข้องเช่นงานที่ค้างอยู่เธรดการสนทนาและไฟล์ข้อมูล / รหัสที่เป็นเวอร์ชันเข้าด้วยกันสามารถช่วยได้อย่างยอดเยี่ยมแม้สำหรับโครงการที่อยู่นอก bailiwick "การเขียนโปรแกรม" แบบดั้งเดิม


5

ตกลงว่า Sweave เป็นวิธีที่จะไปด้วยxtableสำหรับการสร้างตาราง LaTeX แม้ว่าฉันจะไม่ได้ใช้เวลามากเกินไปในการทำงานกับพวกเขาแพ็คเกจtikzDevice ที่เพิ่งเปิดตัวดูดีมากโดยเฉพาะอย่างยิ่งเมื่อรวมกับpgfSweave (ซึ่งเท่าที่ฉันรู้ว่ามีเฉพาะใน rforge.net ในเวลานี้ - มี ลิงก์ไปยัง r-forge จากที่นั่น แต่มันไม่ตอบสนองฉันในขณะนี้)

ระหว่างทั้งสองคุณจะได้รับการจัดรูปแบบที่สอดคล้องกันระหว่างข้อความและตัวเลข (แบบอักษร ฯลฯ ) ด้วยการชงสิ่งเหล่านี้อาจเป็นจอกศักดิ์สิทธิ์ของการสร้างรายงาน


pgfSweave กำลังอยู่ใน "Limbo การพัฒนา" เนื่องจากนักพัฒนาไม่มีเวลาที่จะรวม tikzDevice ใหม่ สำหรับตอนนี้เราขอแนะนำให้ใช้ tikzDevice จากภายในเอกสาร Sweave ปกติ - ผู้ใช้จะต้องรับผิดชอบในการเปิด / ปิดอุปกรณ์และ \ รวมถึง {} ผลลัพธ์ที่ได้
Sharpie

@Sharpie: การปรับปรุงสถานะการพัฒนาของ pgfSweave ใด ๆ มันดูดี แต่ดูเหมือนจะไม่ทำงานในระบบใด ๆ ที่ฉันได้ลอง
Ari B. Friedman

@ gsk3 นักพัฒนาคนอื่น ๆ มีความกระตือรือร้นอย่างมากในการทำให้ pgfSweave ได้รับการปรับปรุงและทำงานได้มากมายตั้งแต่ฉันโพสต์ความคิดเห็นนั้น ตรงไปที่github.com/cameronbracken/pgfSweaveเพื่อติดตามการพัฒนา หากแพ็คเกจไม่ทำงานสำหรับคุณเรายินดีที่จะรับรายงานข้อผิดพลาดเพื่อให้เราสามารถแก้ไขได้
Sharpie

@Sharpie: ยอดเยี่ยมขอบคุณ ฉันส่งต่อข้อความของคุณไปให้เพื่อนของฉันซึ่งทำงานหนักกว่าที่ฉันมี หากเขาไม่ได้รายงานข้อผิดพลาดในไม่ช้าจากนั้นฉันจะรวมเข้าด้วยกัน ดูเหมือนว่าเป็นแพ็คเกจที่ยอดเยี่ยม ขอบคุณสำหรับการทำงานอย่างหนัก
Ari B. Friedman


4

"make" ยอดเยี่ยมเพราะ (1) คุณสามารถใช้งานได้ทุกภาษาไม่ว่าจะเป็น Sweave and Brew) (2) มันมีประสิทธิภาพมาก (เพียงพอที่จะสร้างซอฟต์แวร์ทั้งหมดบนเครื่องของคุณ) และ (3) หลีกเลี่ยงการทำงานซ้ำ จุดสุดท้ายนี้สำคัญสำหรับฉันเพราะงานจำนวนมากช้า เมื่อฉันทำแฟ้มฉันต้องการเห็นผลลัพธ์ภายในไม่กี่วินาทีไม่ใช่ชั่วโมงที่จะสร้างตัวเลขขึ้นมาใหม่


+1 สำหรับทำ อย่างไรก็ตามฉันไม่เห็นว่าใช้งานไม่ได้กับ Sweave ค่อนข้างเมื่อฉันสร้างรายงานโทร Sweave (และสิ่งอื่น ๆ )
Jeromy Anglim

3

ฉันใช้เทมเพลตโครงการพร้อมกับสตูดิโอ R ปัจจุบันฉันมีโฟลเดอร์ดังต่อไปนี้:

  • info : PDF, PowerPoint, docs ... ซึ่งสคริปต์นี้จะไม่ใช้
  • data input : ข้อมูลที่สคริปต์ของฉันจะใช้ แต่ไม่ได้สร้างขึ้น
  • data output : ข้อมูลที่สร้างโดยสคริปต์ของฉันสำหรับการใช้งานต่อไป แต่ไม่เป็นรายงานที่เหมาะสม
  • reports : เฉพาะไฟล์ที่จะปรากฏแก่ผู้อื่นเท่านั้น
  • R : สคริปต์ R ทั้งหมด
  • SAS : เพราะบางครั้งฉันต้อง: '(

ฉันเขียนฟังก์ชั่นที่กำหนดเองเพื่อให้ฉันสามารถโทรsmart_save(x,y)หรือsmart_load(x)บันทึกหรือโหลดRDS filesไปยังและจากdata outputโฟลเดอร์ (ไฟล์ที่มีชื่อด้วยชื่อตัวแปร) ดังนั้นฉันจึงไม่ได้ใส่ใจpathsในระหว่างการวิเคราะห์ของฉัน

ฟังก์ชั่นที่กำหนดเองnew_projectสร้างโฟลเดอร์โครงการที่มีหมายเลขคัดลอกไฟล์ทั้งหมดจากเทมเพลตเปลี่ยนชื่อRProjไฟล์และแก้ไขการsetwdโทรและตั้งค่าไดเรกทอรีทำงานเป็นโครงการใหม่

Rสคริปต์ทั้งหมดอยู่ในRโฟลเดอร์ซึ่งมีโครงสร้างดังนี้:


00_main.R
  • setwd
  • เรียกสคริปต์ 1 ถึง 5

00_functions.R
  • ฟังก์ชั่นทั้งหมดและฟังก์ชั่นเฉพาะไปที่นั่นถ้ามีมากเกินไปฉันจะแยกมันออกเป็นหลาย ๆ ชื่อทั้งหมด00_functions_something.Rโดยเฉพาะอย่างยิ่งถ้าฉันวางแผนที่จะทำแพคเกจจากบางส่วนของพวกเขาฉันจะทำให้พวกเขาออกจากกัน

00_explore.R
  • กลุ่มของสคริปต์ที่ฉันกำลังทดสอบสิ่งต่าง ๆ หรือสำรวจข้อมูลของฉัน
  • มันเป็นไฟล์เดียวที่ฉันอนุญาตให้ยุ่ง

01_initialize.R
  • เติมไว้ล่วงหน้าด้วยการโทรไปยังinitialize_general.Rสคริปต์ทั่วไปมากขึ้นจากโฟลเดอร์แม่แบบของฉันซึ่งโหลดแพคเกจและข้อมูลที่ฉันมักจะใช้และไม่รังเกียจที่จะมีในพื้นที่ทำงานของฉัน
  • โหลด00_functions.R(prefilled)
  • โหลดไลบรารีเพิ่มเติม
  • ตั้งค่าตัวแปรทั่วโลก

02_load data.R
  • โหลดcsv/txt xlsx RDSมีบรรทัดที่ใส่เครื่องหมายแสดงความคิดเห็นไว้ล่วงหน้าสำหรับไฟล์ทุกประเภท
  • แสดงไฟล์ hava ที่ถูกสร้างในเวิร์กสเปซ

03_pull data from DB.R
  • ใช้dbplyrเพื่อดึงข้อมูลตารางที่กรองและจัดกลุ่มออกจากฐานข้อมูล
  • บางบรรทัดแสดงความคิดเห็น prefilled เพื่อตั้งค่าการเชื่อมต่อและดึงข้อมูล
  • รักษาการทำงานของฝั่งไคลเอ็นต์ให้น้อยที่สุด
  • ไม่มีการดำเนินการด้านเซิร์ฟเวอร์นอกสคริปต์นี้
  • แสดงไฟล์ที่ถูกสร้างในเวิร์กสเปซ
  • บันทึกตัวแปรเหล่านี้เพื่อให้สามารถโหลดซ้ำได้เร็วขึ้น

เมื่อเสร็จแล้วเมื่อฉันปิดquery_dbบูลีนและข้อมูลจะโหลดใหม่RDSในครั้งต่อไป

มันสามารถเกิดขึ้นได้ที่ฉันจะต้องเติมข้อมูลให้กับฐานข้อมูลถ้าเป็นเช่นนั้นฉันจะสร้างขั้นตอนเพิ่มเติม


04_Build.R
  • Data wrangling ความสนุกdplyr/ tidyrสิ่งของทุกอย่างไปที่นั่น
  • แสดงไฟล์ที่ถูกสร้างในเวิร์กสเปซ
  • บันทึกตัวแปรเหล่านี้

เมื่อเสร็จแล้วเมื่อฉันปิดbuildบูลีนและข้อมูลจะโหลดใหม่RDSในครั้งต่อไป


05_Analyse.R
  • สรุปแบบจำลอง ...
  • รายงานexcelและcsvไฟล์

95_build ppt.R
  • แม่แบบสำหรับรายงาน PowerPoint โดยใช้ officer

96_prepare markdown.R
  • setwd
  • โหลดข้อมูล
  • ตั้งค่าพารามิเตอร์ markdown หากจำเป็น
  • render

97_prepare shiny.R
  • setwd
  • โหลดข้อมูล
  • ตั้งค่าพารามิเตอร์เงาถ้าจำเป็น
  • runApp

98_Markdown report.Rmd
  • เทมเพลตรายงาน

99_Shiny report.Rmd
  • เทมเพลตแอป

2

สำหรับการเขียนรายงานเบื้องต้นอย่างรวดเร็วหรืออีเมลไปยังเพื่อนร่วมงานฉันพบว่ามันมีประสิทธิภาพมากในการคัดลอกและวางแปลงลงใน MS Word หรือหน้าอีเมลหรือวิกิซึ่งมักจะเป็นภาพหน้าจอบิตแมปที่ดีที่สุด -Shift- (Ctrl) -4) ฉันคิดว่านี่เป็นเทคนิคที่ประเมินราคาต่ำกว่า

สำหรับรายงานขั้นสุดท้ายเพิ่มเติมการเขียนฟังก์ชั่น R เพื่อสร้างแปลงทั้งหมด (เป็นไฟล์) ได้อย่างง่ายดายมีความสำคัญมาก ใช้เวลาในการเขียนรหัสนี้มากขึ้น

ในประเด็นเรื่องเวิร์กโฟลว์ที่ใหญ่ขึ้นฉันชอบคำตอบของ Hadley เกี่ยวกับการแจกแจงไฟล์รหัส / ข้อมูลสำหรับการทำความสะอาดและวิเคราะห์โฟลว์ โครงการวิเคราะห์ข้อมูลของฉันทั้งหมดมีโครงสร้างที่คล้ายกัน


2

ฉันจะเพิ่มเสียงเพื่อ sweave สำหรับการวิเคราะห์ที่ซับซ้อนหลายขั้นตอนคุณสามารถใช้makefileเพื่อระบุส่วนต่างๆ สามารถป้องกันไม่ให้ทำการวิเคราะห์ซ้ำทั้งหมดหากส่วนใดส่วนหนึ่งมีการเปลี่ยนแปลง


0

ฉันยังทำสิ่งที่ Josh Reich ทำ แต่ฉันเท่านั้นที่สร้างแพ็คเกจ R ส่วนตัวของฉันเพราะมันช่วยให้ฉันจัดโครงสร้างรหัสและข้อมูลของฉันและมันก็ค่อนข้างง่ายที่จะแบ่งปันสิ่งเหล่านั้นกับผู้อื่น

  1. สร้างแพ็คเกจของฉัน
  2. ภาระ
  3. สะอาด
  4. ฟังก์ชั่น
  5. ทำ

กำลังสร้างแพ็คเกจของฉัน: devtools :: create ('package_name')

โหลดและทำความสะอาด: ฉันสร้างสคริปต์ใน data-raw / โฟลเดอร์ย่อยของแพ็คเกจของฉันสำหรับการโหลดการทำความสะอาดและการจัดเก็บวัตถุข้อมูลที่เป็นผลลัพธ์ในแพ็คเกจโดยใช้ devtools :: use_data (object_name) จากนั้นฉันก็รวบรวมแพ็คเกจ นับจากนี้ไปการเรียกใช้ไลบรารี (package_name) ทำให้ข้อมูลเหล่านี้พร้อมใช้งาน (และจะไม่โหลดจนกว่าจะจำเป็น)

ฟังก์ชั่น: ฉันใส่ฟังก์ชั่นสำหรับการวิเคราะห์ของฉันลงใน R / โฟลเดอร์ย่อยของแพ็คเกจของฉันและส่งออกเฉพาะที่จำเป็นต้องเรียกใช้จากภายนอก (ไม่ใช่ฟังก์ชั่นตัวช่วยซึ่งมองไม่เห็น)

ทำ: ฉันสร้างสคริปต์ที่ใช้ข้อมูลและฟังก์ชั่นที่เก็บไว้ในแพ็คเกจของฉัน (หากการวิเคราะห์จำเป็นต้องทำเพียงครั้งเดียวฉันสามารถใส่สคริปต์นี้ลงใน data-raw / subfolder เรียกใช้และเก็บผลลัพธ์ไว้ในแพ็คเกจเพื่อให้สามารถเข้าถึงได้ง่าย)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.