r语言 - sqlite 的替代品,或者是在 sqlite 中处理日期/时间字段的更好方法



我的数据往往是中型到大型,但从来都不符合"大"数据的条件。数据几乎总是复杂的关系。出于我在这里谈论的目的,10-50 个表,总大小为 1-10 GB。而已。当我处理比这更大的数据时,我会将其粘贴到Postgres或SQL Server中。

总的来说,我喜欢SQLite,

但是我使用的数据有很多日期/日期时间字段,处理SQLite中的日期字段让我头疼,当我在R和SQLite之间来回移动数据时,我的日期经常被破坏。

我正在寻找一种基于文件的SQLite替代方案,该替代方案易于从R使用。

更好的技术/包,用于将数据移入/移出SQLite和R,而无需修改日期。我的目标是停止篡改我的约会。例如,当我使用 RSQLite 包中的 dbWriteTable 时,我的日期通常会以一种无法使用的方式搞砸。

我的主要工作站运行Ubuntu,但我在一个由Windows主导的办公室工作。如果建议SQLite的替代方案,则+++表示在两个平台(或更多(上都有效的替代方案。

使用纪元时间和日期(从原点开始的天数,从原点开始的秒数(。使用纪元转换为 R POSIXct 或 Date 的速度很快(字符串非常慢(。

编辑:在重新读取并考虑数据大小后,另一种选择:

您可以简单地将表直接保存为 R 格式,也许可以使用一小段额外的元数据来描述表之间的关键关系。您必须创建自己的约定等等,但它肯定更平滑(没有阻抗不匹配(。

另外,我个人非常偏爱包data.table。它速度很快,语法是纯R,但对SQL概念有一个很好的映射。例如,在dt[i, j, by=list(...)]中,i对应于"where",j对应于"选择",by对应于"分组依据",并且也有用于连接的工具,尽管我在这些包装周围写了中缀包装器,以便更容易记住。

我通常只在 R 中完成数据处理工作(在从 SQLITE 进行初始拉取之后(,我发现 data.table 比大量 SQLDF 查询更快、更实用。

http://datatable.r-forge.r-project.org/

sqlite 希望以标准格式"YYYY-MM-DD HH:MM:SS"读取数据(如果不需要,可以省略时间部分(---我不知道读取任意日期字符串的方法。这会导致存储规范化日期。

在输出时,您希望使用 sqlite 函数将日期格式化为其他软件需要的任何内容---检查 strftime(( 的选项。

例如,Octave 喜欢自 0 年以来的日期数字,所以如果我有一个带有"日期"列的表 mydata,我会这样做

从 mydata 中选择 Julianday(mydate(-1721059.666667

神奇的数字是朱利安迪("0000-01-01T00:00:

00-04:00"(,并补偿了朱利安迪从公元前 4017 年开始或类似的东西,而八度从 0 年开始计算。

最新更新