r - 如何使用R计算组数?

标签 r data.table

这可能是一个非常简单的问题,我有一个带键的 data.table 和超过 1000 行,其中两个可以设置为键。我想计算这个数据集的组数。

比如简单的数据是(ID和Act是key)

ID  ValueDate Act Volume
1 2015-01-01 EUR     21
1 2015-02-01 EUR     22
1 2015-01-01 MAD     12
1 2015-02-01 MAD     11
2 2015-01-01 EUR      5
2 2015-02-01 EUR      7
3 2015-01-01 EUR      4
3 2015-02-01 EUR      2
3 2015-03-01 EUR      6

下面是生成测试数据的代码:

dd <- data.table(ID = c(1,1,1,1,2,2,3,3,3), 
                 ValueDate = c("2015-01-01", "2015-02-01", "2015-01-    01","2015-02-01", "2015-01-01","2015-02-01","2015-01-01","2015-02-01","2015-03-01"),
                 Act = c("EUR","EUR","MAD","MAD","EUR","EUR","EUR","EUR","EUR"),
                 Volume=c(21,22,12,11,5,7,4,2,6))

在这种情况下,我们可以看到总共有 4 个子集。

我试着先设置这个表的键,

setkey(dd, ID, Act)

然后我想到count的功能可以用来计算组数。 使用count函数是否正确,或者有什么简单的方法吗?

非常感谢!

最佳答案

nrow(dd[, .(cnt= sum(.N)), by= c("ID", "Act")])

# or using base R
{t <- table(interaction(dd$ID, dd$Act)); length(t[t>0])}

# or for the counts:
dd[, .(cnt= sum(.N)), by= c("ID", "Act")]
   ID Act cnt
1:  1 EUR   2
2:  1 MAD   2
3:  2 EUR   2
4:  3 EUR   3

关于r - 如何使用R计算组数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34078388/

相关文章:

r - data.table 按名称引用另一个 data.table 中的列

r - 在 R 中控制 POSIX 时间差输出

r - 将分组平均值添加到数据框中的列

r - 基于不等时间戳连接data.tables

r - 按 2 个成对向量子集/过滤 data.table

r - data.table:如何将字符向量传递给函数 get data.table 以将其内容视为列名?

r - 如何根据R中列向量的升序/降序对列表进行子集化

r - 如何使用 ggplot2 生成热图?

r - 如何根据 MuMIn model.avg() 摘要进行绘图

r - 如何根据另一个数据表中的条件从数据表中删除行