是否有人对与自定义报告编写相关的数据分析工作流程有任何智慧?用例基本上是这样的:
客户委托制作一份使用数据分析的报告,例如一个水域的人口估计和相关地图。
分析员下载一些数据,整理数据并保存结果(例如,为每单位人口添加一列,或根据地区边界对数据进行子集化)。
分析师分析在 (2) 中创建的数据,接近她的目标,但认为需要更多数据,因此返回 (1)。
冲洗重复,直到表格和图形符合 QA/QC 并满足客户。
编写包含表格和图形的报告。
明年,快乐的客户回来并想要更新。这应该像通过新下载更新上游数据一样简单(例如,从去年获得建筑许可),然后按“重新计算”按钮,除非规格发生变化。
目前,我只是启动一个目录,并尽我所能将其临时化。我想要一个更系统的方法,所以我希望有人能解决这个问题……我混合使用了电子表格、SQL、ARCGIS、R 和 Unix 工具。
谢谢!
PS:
.RData下面是一个基本的 Makefile,它检查各种中间数据集(带后缀)和脚本(后缀)的依赖关系.R。Make 使用时间戳来检查依赖关系,所以如果你touch ss07por.csv,它会看到这个文件比所有依赖它的文件/目标都新,并执行给定的脚本以相应地更新它们。这仍然是一项正在进行的工作,包括一个放入 SQL 数据库的步骤,以及一个像 sweave 这样的模板语言的步骤。请注意,Make 在其语法中依赖于制表符,因此在剪切和粘贴之前请阅读手册。享受并提供反馈!
.RData
.R
touch ss07por.csv
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 Functions.R $R --slave -f ImportData.R persondata.Munged.RData : MungeData.R persondata.RData Functions.R $R --slave -f MungeData.R report.txt:TabulateAndGraph.R persondata.Munged.RData Functions.R $R --slave -f TabulateAndGraph.R > report.txt
我通常将我的项目分为 4 个部分:
load.R:负责加载所需的所有数据。通常这是一个短文件,从文件、URL 和/或 ODBC 中读取数据。根据此时的项目,我将使用save()或仅将内容保存在内存中以供下一步使用。
save()
clean.R:这是所有丑陋事物的所在——处理缺失值、合并数据框、处理异常值。
func.R:包含执行实际分析所需的所有函数。source()‘ing 这个文件除了加载函数定义之外应该没有副作用。这意味着您可以修改此文件并重新加载它,而无需返回重复步骤 1 和 2,这对于大型数据集可能需要很长时间才能运行。
source()
do.R:调用func.R中定义的函数进行分析并生成图表和表格。
此设置的主要动机是处理大数据,因此您不希望每次更改后续步骤时都必须重新加载数据。此外,像这样保持我的代码分隔意味着我可以回到一个早已被遗忘的项目并快速阅读 load.R 并计算出我需要更新哪些数据,然后查看 do.R 以确定执行了哪些分析。