我对R中的(Postgre)SQL数据库的使用有疑问:关于这个主题的许多文档强调了这样一个事实,即如果你处理的是大数据,那么在R中使用SQL数据库是有意义的适合你的公羊(例如见here和here)。我有不同的情况,并没有发现使用Postgre(SQL)数据库是否是一个合理的决定。这是我的情况:
我很好地进行了一项生态研究,我在不同的采样间隔(5分钟和3小时)内分析了狍鹿gps数据,历时约2年。另外,我以4分钟的采样间隔集成了两个轴加速度数据。
为了评估狍对人类的行为,我分析了这个多维数据,将其与以5秒采样间隔拍摄的人类gps数据进行比较。
到目前为止,我一直在使用带有dplyr的dataframe / datatable进行此分析。将所有数据合并到一个数据集中时,生成的数据表实际上变为 wide 。这些列包括:人类和狍的时间戳,ID,X / Y位置,DOP等,以及所有得到的计算值,如距离,速度,海拔,接近度等等。
此外,数据非常长:由于多个狍和多个人的位置同时被记录(多对多关系),这导致很多数据框中的重复。最重要的是,人类和狍之间的不同采样间隔也导致重复(狍位置)。
我希望通过数据库解决方案,我可以
您是否建议在我的案例中使用数据库?使用数据库解决方案是否有助于实现上述目标?
答案 0 :(得分:1)
Postgresql为ACID数据库提供所有保护。
我使用R和Postgresql进行工作。说实话,我更喜欢数据库中的大部分内容。
对于您的多对多数据,Database normalization可以帮助您。
同样从相关列上的postgresql中选择并对行应用过滤器可能会有所帮助。有关选择查询的更多信息,请参阅Ref Postgresql select tutorial
EG
从example_table中选择column1,column3,其中x = y等,并将其读入数据集。
数据库更适合处理数据,而R更适合数据分析。
如果您想查看从R调用Postgresql的命令,您可以查看Google的这篇文章。
实施例
```library(RPostgreSQL)
加载PostgreSQL驱动程序
drv< - dbDriver(“PostgreSQL”)
打开连接
con< - dbConnect(drv,dbname =“R_Project”)
提交声明
rs< - dbSendQuery(con,“select * from R_Users”)
一切顺利