使用R处理多维(时空)数据的最佳实践

时间:2016-05-21 12:15:30

标签: r database postgresql gps dplyr

我对R中的(Postgre)SQL数据库的使用有疑问:关于这个主题的许多文档强调了这样一个事实,即如果你处理的是大数据,那么在R中使用SQL数据库是有意义的适合你的公羊(例如见herehere)。我有不同的情况,并没有发现使用Postgre(SQL)数据库是否是一个合理的决定。这是我的情况:

我很好地进行了一项生态研究,我在不同的采样间隔(5分钟和3小时)内分析了狍鹿gps数据,历时约2年。另外,我以4分钟的采样间隔集成了两个轴加速度数据。

为了评估狍对人类的行为,我分析了这个多维数据,将其与以5秒采样间隔拍摄的人类gps数据进行比较。

到目前为止,我一直在使用带有dplyr的dataframe / datatable进行此分析。将所有数据合并到一个数据集中时,生成的数据表实际上变为 wide 。这些列包括:人类狍的时间戳,ID,X / Y位置,DOP等,以及所有得到的计算值,如距离,速度,海拔,接近度等等。

此外,数据非常:由于多个狍和多个人的位置同时被记录(多对多关系),这导致很多数据框中的重复。最重要的是,人类和狍之间的不同采样间隔也导致重复(狍位置)。

我希望通过数据库解决方案,我可以

  1. 编写更简洁,更简洁,更简洁的代码来分析我的数据
  2. 自此以后更好地了解我的数据
    • 更短(不重复)和
    • 较窄(具有相应关系的各个数据集的单独表格)
  3. 您是否建议在我的案例中使用数据库?使用数据库解决方案是否有助于实现上述目标?

1 个答案:

答案 0 :(得分:1)

Postgresql为ACID数据库提供所有保护。

我使用R和Postgresql进行工作。说实话,我更喜欢数据库中的大部分内容。

对于您的多对多数据,Database normalization可以帮助您。

同样从相关列上的postgresql中选择并对行应用过滤器可能会有所帮助。有关选择查询的更多信息,请参阅Ref Postgresql select tutorial

EG

  

从example_table中选择column1,column3,其中x = y等,并将其读入数据集。

数据库更适合处理数据,而R更适合数据分析。

如果您想查看从R调用Postgresql的命令,您可以查看Google的这篇文章。

参考RPostgresql

  

实施例

     

```library(RPostgreSQL)

     

加载PostgreSQL驱动程序

     

drv< - dbDriver(“PostgreSQL”)

     

打开连接

     

con< - dbConnect(drv,dbname =“R_Project”)

     

提交声明

     

rs< - dbSendQuery(con,“select * from R_Users”)

一切顺利