c++ - 返回表值计数的最佳 R 数据结构

标签 c++ sql r data-structures

以下函数返回一个包含两列的 data.frame:

fetch_count_by_day=function(con){
  q="SELECT t,count(*) AS count FROM data GROUP BY t"
  dbGetQuery(con,q)    #Returns a data frame
}

t 是 DATE 列,因此输出如下:

       t       count(*)
1 2011-09-22     1438
...

我真正感兴趣的是给定日期的任何记录是否已经存在;但我也会使用计数作为健全性检查。

在 C++ 中,我会返回一个 std::map<std::string,int>std::unordered_map<std::string,int> (*). 在 PHP 中,我将使用以日期为键的关联数组。

R 中最好的数据结构是什么?它是一个 2 列的 data.frame 吗?我的第一个想法是打开 t列到行名:

...
d=dbGetQuery(con,q)
rownames(d)=d[,1]
d$t=NULL

但是 data.frame 行名不是唯一的,所以从概念上讲它不太合适。我也不确定它是否可以更快地使用它。

(“最佳”的任何和所有定义:最快、最少的内存、代码清晰度、经验丰富的 R 开发人员最不惊讶等。也许有一个解决方案适用于所有人;如果没有,那么我想了解交易-关闭以及何时选择每个选项。)

*:(对于 C++)如果基准测试显示这是瓶颈,我可能会将日期戳转换为 YYYYMMDD 整数并使用 std::unordered_map<int,int> ;知道数据只涵盖几年,我什至可能每天在 min(t) 之间使用一个 int 的内存块。和 max(t) (将所有内容包装在一个类中)。

最佳答案

列联表实际上是数组(或矩阵),可以很容易地创建。dimnames 保存值,数组/矩阵在其“核心”保存计数数据。 “table”和“tapply”功能是天生的创造者。您使用“[”访问计数并使用 dimnames() 后跟“[”来获取行和列名称。我会说使用“日期”类作为日期比存储在“字符” vector 中更明智。

关于c++ - 返回表值计数的最佳 R 数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549644/

相关文章:

c++ - 在 sfml 中不工作线程

mysql - 存储多媒体帖子 SQL DB 的最佳实践

将矩阵中的 0 替换为 NA

c++ - 定义只调用私有(private)函数的公共(public)函数有什么好处

c++ - 流转换过滤器 : invalid PKCS #7 block padding found in AES decryption

c++ - C++ Windows 中的 RAW 套接字

sql - Oracle SQL 使用空字符串更新 NOT NULL 列

mysql - SQL - 无法使用多个聚合函数结果过滤表

r - 带类的打印功能

r - 基于条件 react 逻辑 Shiny 的 flexdashboard