【发布时间】:2014-02-03 10:23:11
【问题描述】:
我想使用data.table 为大型数据集实现一个非常简单的任务。
计算每个 ID 的 val1 和 val2 的平均值。
详情请参考附件假数据。
library(data.table)
DT <- data.table(ID = paste0("ID",rep(1:5,each=2)),
level= rep(c("CTRL","CTRL","ID1","ID2","ID3"),2),
val1 = 1:10,
val2 = rnorm(10))
这里我要计算每个 ID,val1 和 val2 的平均值。
还要注意,在每个 ID 中,都有不同的级别。但对于每个唯一 ID,我只想要一个意味着合并不同级别 val1 和 val2。
--- ID |意思---
-- ID1 | ...
-- ID2 | ...
-- ID3 | ...
我尝试了以下代码,但它不起作用。
topagents <- DT[, mean = mean(list(val1,val2)),
by = ID]
但它不起作用。
我知道如何在reshape2 中进行操作,首先是melt,然后是dcast。
但是原始数据集比较大,20M行12个字段,计算时间比较长。
所以我更喜欢使用data.table 或dplyr。
【问题讨论】:
标签: r data.table dplyr