加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

R data.table:重用聚合

发布时间:2020-12-14 04:58:04 所属栏目:百科 来源:网络整理
导读:我想将相同的聚合应用于多个数据表,而不重写聚合方案. 考虑 dt1 - data.table(id = c(1,2),a = rnorm(10),b = rnorm(10),c = rnorm(10))dt2 - data.table(id = c(1,c = rnorm(10))dt1_aggregates - dt1[,.(mean_a=mean(a),sd_a=sd(a),mean_b=mean(b),sd_b=sd
我想将相同的聚合应用于多个数据表,而不重写聚合方案.

考虑

dt1 <- data.table(id = c(1,2),a = rnorm(10),b = rnorm(10),c = rnorm(10))
dt2 <- data.table(id = c(1,c = rnorm(10))

dt1_aggregates <- dt1[,.(mean_a=mean(a),sd_a=sd(a),mean_b=mean(b),sd_b=sd(b)),by=id]
dt2_aggregates <- dt2[,by=id]

有没有办法为dt2重用dt1_aggregates聚合方案而不必将其写出两次?

解决方法

您可以引用所需的表达式,然后在data.table中对其进行评估:

my.call=quote(list(mean_a=mean(a),sd_b=sd(b)))
dt1[,eval(my.call),by=id]

产生

id       mean_a      sd_a      mean_b      sd_b
1:  1  0.004165423 0.7504691 -0.05001424 1.4440434
2:  2 -0.430910188 0.9648096  0.26918995 0.8680997

dt2[,by=id]

产生

id     mean_a     sd_a     mean_b      sd_b
1:  1  0.2974145 1.191863 -0.0588854 0.7896988
2:  2 -0.4642856 1.438937  0.3612607 1.0581702

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读