我想将相同的聚合应用于多个数据表,而不重写聚合方案.
考虑
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。