如何使人们更好地处理数据?


42

我的工作场所拥有来自不同学科的员工,因此我们以许多不同的形式生成数据。因此,每个团队都开发了自己的存储数据系统。有些使用Access或SQL数据库。有些团队(令我恐惧的是)几乎完全依赖Excel电子表格。通常,数据格式因项目而异。在某些情况下,称其为“系统”太客气了。

这带来的问题是,我必须编写新代码来清理每个项目的数据,这很昂贵;手动编辑电子表格的人几乎不可能进行数据的可重复性和审计。甚至更糟的是,数据可能会丢失或变得不正确。

我有机会与公司董事会成员讨论这些问题,我需要弄清楚该如何告诉他。我认为我已经说服了他我们有一个问题,正确解决这个问题将使科学更好并节省资金。问题是:我们应该瞄准什么,如何到达那里?

进一步来说:

我们应该如何存储数据,以使我们能够跟踪数据从创建到发布的过程?(数据库存储在中央服务器上吗?)

您如何实现数据库格式的标准化?

有什么好的资源可以教育人们如何护理数据?(通常,职业卫生师和炸药工程师不是数据呆子;因此,非技术性内容优先。)


标题问题与帖子中的实质性问题不同。前者询问如何说服人们使用数据,后者询问如何最好地存储数据。您想回答哪个问题?
恢复莫妮卡

Answers:


16

值得考虑软件界的想法。特别是,您可能会考虑设置:版本控制存储库和中央数据库服务器。

版本控制可能会帮助您使用其他可用的浮动文件,例如Excel和文本文件等。但这也可能包括与数据相关的文件,例如R,SAS等。其想法是,存在一个系统来跟踪更改您的文件可让您知道发生了什么情况,并在需要时回滚到过去的某个时间点。

在已经拥有SQL数据库的地方,最好的办法是设置中央服务器并雇用有能力的DBA。DBA是负责确保和维护数据完整性的人员。职位描述的一部分涉及备份和调整之类的事情。但这里还有另一部分更相关-控制数据如何进入系统,确保满足约束条件,适当的访问策略以防止对数据造成损害,设置视图以显示自定义或简化的数据格式等。简而言之,围绕数据流程实施方法。即使您没有聘请实际的DBA(很难招聘优秀的DBA),拥有中央服务器仍然可以使您开始考虑围绕数据建立某种方法。


3
绝对同意版本控制。我用它; 大部分开发人员和统计人员也是如此。(我希望看到100%的采用率,但这是现在的另一个梦想。)很难的是让非技术人员使用它。任何想法表示赞赏。
Richie Cotton

2
@Richie Cotton:我不知道为什么,但是版本控制对于非技术人员来说似乎很难理解。人们继续对文件进行一些更改,重命名并通过电子邮件发送。我怎么讨厌那些“ PaperDraftCorrectedByJohnRevision3RewroteByLeslie-NewVersion3.doc”文件...
nico 2010年


6

我认为首先您必须问自己:人们为什么使用Excel来执行Excel并非专门为完成的任务?

1)他们已经知道如何使用它2)它起作用。也许很笨拙,但是它起作用了,这就是他们想要的

我复制了一系列数字,按了一个按钮,便有了一个图。就这么简单。

因此,通过使用集中式数据集,适当的数据库(请注意,Access并非其中之一),使他们了解他们可以拥有什么优势。但是请记住以上两点:您需要建立一个可以正常工作并且易于使用的系统。

我见过很多次制造不佳的系统,这些系统使我想回到的不是Excel,而是笔和纸!

举个例子,我们有一个糟糕的订购系统。

我们曾经必须填写一个订单表格,这是一个Excel电子表格,您可以在其中输入产品名称,数量,成本等。它将添加所有内容,添加TVA等,然后将其打印出来,交给下订单的秘书就是这样。效率低下,但有效。

现在,我们有了一个在线订购系统,其中包含一个集中式数据库和所有内容。真是恐怖 由于具有统一的键盘快捷键和软件的各种怪异之处,我不需要花10分钟来填写该死的表格。请注意,我非常了解信息技术,所以请想象一下那些不喜欢计算机的人会发生什么……


同意事物必须对用户友好。由于人们对其工作习惯有了很好的保护,因此任何更改都必须使人们的生活更轻松,否则他们就会失败。
Richie Cotton

5

我已经强调了所有给出的答案,但让我们称呼猫为猫:在许多工作空间中,几乎不可能说服管理层对“异国情调”软件工具(即对他们来说是异国情调)的投资是必要的,更不用说雇用可以设定条件的人了并维护它。我已经告诉很多客户,他们会从雇用具有软件和数据库背景的统计学家那里受益匪浅,但是普遍的回答是“不能做”。

因此,只要这不会发生,您就可以使用Excel进行一些简单的操作,使生活更轻松。首先,这无疑是版本控制。可以在此处找到有关使用Excel进行版本控制的更多信息。

有关使用Excel的一些注意事项

人们经常使用EXCEL,他们喜欢EXCEL的配方功能。但是,这是EXCEL工作表中错误的最重要来源,而就我的经验而言,这也是尝试读取EXCEL文件时出现问题的最重要原因。我拒绝使用包含公式的表。

我还强迫与我一起工作的每个人以纯格式提供EXCEL表格,这意味着:

  • 第一行包含不同变量的名称
  • 电子表格开始于单元格A1中
  • 所有数据都放在列中,没有中断且没有格式。
  • 如果可能,数据也将以.csv格式保存。编写一个VBA脚本以提取数据,将其重新格式化并放入.csv文件中并不难。这还可以更好地控制版本,因为您每天都可以对数据进行.csv转储。

如果数据始终具有通用结构,则最好使用基础VB宏开发模板以添加数据并生成数据集进行分析。通常,这可以避免每个员工都想出自己的“天才”数据存储系统,并且可以使用此功能编写代码。

这就是说,如果您可以说服所有人使用SQL(以及用于输入数据的前端),则可以将R直接链接到该SQL。这将大大提高性能。

数据结构与管理

通常,存储在数据库(或EXCEL工作表,如果坚持)中的数据应该是绝对最小值,这意味着可以从其他变量中计算出的任何变量都不应包含在数据库中。请注意,如果计算乏味且耗时较长,有时也可以存储那些派生或转换后的变量,这将是有益的。但是这些应该存储在单独的数据库中,如果有必要链接到原始数据库。

还应该考虑被认为是一种情况(因此是一排)的情况。例如,人们倾向于通过为每个时间点创建一个新变量来产生时间序列。尽管这在EXCEL中是有意义的,但读取这些数据需要对数据矩阵进行一些翻转。比较组时相同:应该有一个组指标和一个响应变量,而不是每个组的响应变量。这样,数据结构也可以标准化。

我经常遇到的最后一件事是使用不同的指标。长度以米或厘米为单位,温度以摄氏度,开尔文或法伦海特为单位,...在任何前端或任何模板中均应指示变量的测量单位。

即使完成了所有这些操作,您仍然希望在实际开始分析之前就有一个数据控制步骤。同样,这可以是每天(例如,隔夜)在新条目上运行的任何脚本,并且可以立即标记问题(超出范围,类型错误,字段丢失等),以便可以尽快对其进行纠正。如果您必须返回两个月前所做的输入,以查找错误和原因,那么最好获得一些好的“ Sherlock技能”来纠正它。

我的2美分


这里有一些非常有趣的观点。说服人们简化和标准化电子表格可能比让他们放弃电子表格更成功。而且我也不知道版本控制可以与Excel集成。很高兴知道。
Richie Cotton

2
关于不存储冗余变量的建议:这对于RDBMS是合适的,但我想建议对于电子表格应鼓励相反的做法。后者非常容易出错,因此检测和纠正错误的机制非常宝贵。最好的信息之一是冗余信息,例如计算字段和统计摘要。例如,如果列C是列A和列B的比率,则可以检测到任何给定行中的单个列中的错误,并且通常可以修复该错误。
ub

1
@whuber:这就是我们在数据控制步骤中检查的内容。您可以使用该额外的列进行快速检查,但不要将其保留在最终表中。电子表格中的公式很恐怖,电子表格越大,从中获取数据就越困难。另外,对于Excel,无论如何,您都将努力解决.xls和.xlsx之间的差异。如果您严重依赖excel文件,请确保经理决定更新Microsoft Office可能会破坏大量代码。因此:另存为csv,并保持这些csv文件尽可能小。
Joris Meys 2010年

在我职业生涯的最后24年中,花费了很大一部分时间处理电子表格中传输的数据并管理大量数据库之后,我必须谨以不同意。根本没有对电子表格(“ .xls”,“。xlsx”,“。wks”,“。wb *等”)进行“控制”,甚至没有csv文件。此类文件中存在冗余信息-即使仅以印刷形式提供也是如此-已经多次复活了一些相当大的数据库(超过10万条记录)。每次发生这种情况时,我(和我的客户)都对裁员表示感谢。
ub

@whuber:我们使用额外的脚本进行数据控制,以查找不可能的值/异常值/奇数情况。这就是我所说的数据控制步骤。这是SGS等公司进行临床试验分析的公司的行业标准。需要的冗余信息保存在单独的数据库中。如果其中一个失败,则需要另一个来复活。如果您没有像样的备份系统,那就是……
Joris Meys 2010年

3

VisTrails:基于Python的科学工作流程和来源系统。在PyCon 2010上的演讲有一些好主意。即使您对使用VisTrails或python不感兴趣,也值得一听。最后,我认为,如果您能够要求以清晰的文档方式重现数据。并要求他们进行一些验证。

报价:

“在本次演讲中,我们将概述VisTrails(http://www.vistrails.org),这是一个基于python的开源科学工作流程,可以透明地捕获数据产品和所使用过程的出处(即沿袭)派生出这些产品。我们将展示如何使用VisTrails简化数据探索和可视化;通过实际的例子,我们将展示系统的关键功能,包括以可视方式创建结合了多种工具和库的信息处理管道的能力。 VTK,pylab和matplotlib。我们还将展示VisTrails如何利用出处信息不仅支持结果可重复性,而且简化管道的创建和完善。”


Python在我们组织中并不广泛,但是看起来像一个有趣的项目。我将看看是否可以从他们的文档中了解一些有关如何完成工作的想法。
Richie Cotton

2

我刚刚浏览了由ICPSR托管的有关数据管理计划的网页。尽管我认为ICPSR的目标与您的业务有所不同(例如,他们非常希望在不违反机密性的前提下很容易地分发数据),但我认为它们对企业有用。在我看来,关于创建元数据的特别建议似乎很普遍。


2

在较小的比例尺上,我体验了使用保管箱与其他研究人员/合作者共享/同步数据文件(以及脚本和结果)副本的经验(我在这里写过)。

我使用的另一个工具是用于收集和共享数据的google文档(我在此处写过关于它的信息


0

Dropbox + packrat非常适合与备份/版本共享文件。

然后,将这些文件(在自动规范化/按摩之后)加载到数据库中,并根据清理后的数据进行分析。将脚本置于版本控制下(或至少带有packrat选项的单独的保管箱文件夹中)以自动执行“提取-转换-加载”周期。

当数据库服务器最终崩溃(或需要分片或其他原因)时,您就有一条管道将数据从对人友好的(Excel,Web表单等)移动到对分析友好的(通常是规范化和受约束的,总是被清理)。

“ ETL”阶段来自数据仓库。而且,如果您不构建在线交易处理系统,则可能正在构建数据仓库。因此,请拥抱它,并充分利用人们在过去30年中积累的经验教训。

玩得开心。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.