关系数据库与 R/Python 数据框

Relational database versus R/Python data frames

在 RDBMS 系统和其他数据库系统之前,我接触过 R 中表和数据结构的世界。 R/Python 从结构化数据(.csv 或其他格式)创建表格和列表,然后以编程方式进行数据操作是非常优雅的。

去年,我参加了数据库管理课程,学习了有关结构化和非结构化数据库的所有知识。我还注意到,将来自多个数据源的数据输入数据库而不是直接在 R 中使用它们是一种规范(为了方便和纪律?)。

出于研究目的,R 似乎足以用于连接、附加甚至复杂的数据操作。

不断出现的问题是: 什么时候使用read.csv等命令直接使用R,什么时候通过R-SQL接口创建数据库并从表中查询来使用R?

例如,如果我有一个多源数据,例如 (a) 人员级别信息(年龄、性别、吸烟习惯),(b) 结果变量(例如他们实时进行的调查), (c) 协变量信息(环境特征),(d) 治疗输入(改变结果的事件的发生 - 调查响应)(d)时间和 space 参与调查的信息

在这种情况下如何处理数据收集和处理。可能有标准的行业程序,但我在这里提出这个问题,以了解个人和一小群研究人员可以采用的可行和最佳方法列表。

您所说的 "that it is the norm to feed data from multiple sources of data into databases" 听起来更像是一个数据仓库。使用数据库的原因有很多,在很多情况下,它们将保存来自一个来源的数据——例如,用作事务系统数据存储的数据库通常只保存 运行 该系统所需的数据,以及该系统产生的数据。

您所描述的过程通常称为提取、转换、加载 (ETL),如果您决定在之前合并数据,查找有关 ETL 和数据仓库的信息可能会有所帮助在 R 中使用它。

我无法告诉您应该选择哪个,或者最佳的实现方式,因为它会因情况而异,甚至可能归结为个人意见。我可以告诉你的是人们创建数据仓库的一些原因,你可以自己决定它是否对你的情况有用:

数据仓库可以提供一个中心位置来保存组合数据。这意味着人们不需要在每次需要使用特定数据组合时自己组合数据。与简单的一次性报告或组合数据提取不同,它应该提供一定的灵活性,让人们获得特定任务所需的组合数据集。很多时候,在企业情况下,多个事物然后 运行 在同一个组合数据集之上 - 多维数据分析工具(多维数据集)、报告、数据挖掘等

这样做的一些好处可能包括:

  • 个人在需要自己合并数据时节省了时间。
  • 如果需要合并的数据很复杂,或者有些人不熟练处理这部分流程,那么数据合并不正确的风险就较小;您可以确定不同的工作使用了相同的源数据。
  • 如果数据存在数据质量问题,您只需在数据仓库中解决一次,而不是解决它或在代码中重复解决它。
  • 如果不断收到新数据,可以自动将其收集并集成到数据仓库中。

就像我说的,我无法为您决定这是否是一个有用的方向 - 对于此类任何决定,您需要权衡实施此类解决方案的成本与收益,两者都将针对您的个案。但希望这能回答您的核心问题,即为什么有人可能会选择在数据库中而不是在他们的代码中完成这项工作,并为您提供一个工作起点。