5

我的数据往往是中型到大型,但从不符合“大”数据的条件。数据几乎总是复杂的关系。出于我在这里讨论的目的,10-50 个表,总大小为 1-10 GB。而已。当我处理比这更大的数据时,我会把它放到 Postgres 或 SQL Server 中。

总的来说,我喜欢 SQLite,但我使用的数据有很多日期/日期时间字段,在 SQLite 中处理日期字段让我很头疼,当我在 R 和 SQLite 之间来回移动数据时,我的日期经常被弄乱.

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

或者

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

我的主要工作站运行的是 Ubuntu,但我在一个以 Windows 为主的办公室工作。如果建议使用 SQLite 的替代方案,则 +++ 可以在两个平台(或更多平台)上工作的替代方案。

4

2 回答 2

2

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

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

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

另外,我个人非常偏爱这个包data.table。它速度快,语法是纯 R 语言,但很好地映射到 SQL 概念。例如 in dt[i, j, by=list(...)]i对应于“where”,j对应于“select”和by“group by”,并且还有用于连接的工具,尽管我在它们周围编写了中缀包装器,因此更容易记住。

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

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

于 2012-05-14T16:24:39.397 回答
0

sqlite想读取标准格式“YYYY-MM-DD HH:MM:SS”的数据(不需要的可以省略时间部分)---我不知道怎么读任意日期字符串。这导致存储标准化的日期。

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

例如,Octave 喜欢从 0 年开始的天数,所以如果我有一个表 mydata 的列“日期”,我会这样做

从 mydata 中选择 julianday(mydate)-1721059.666667

The magic number is julianday("0000-01-01T00:00:00-04:00") and compensates for the fact that julianday starts in year 4017BC or something like that, whereas Octave counts from year 0.

于 2014-05-23T22:00:37.573 回答