首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >总结其他变量

总结其他变量
EN

Stack Overflow用户
提问于 2019-09-08 22:27:32
回答 1查看 45关注 0票数 2

假设我有数据

代码语言:javascript
运行
复制
set.seed(42)
dat <- data.table(id=1:10,x=rnorm(10),group=rep(1:2,each=5), gc=rep(c(10,20), each=5))

> dat
    id           x group gc
 1:  1  1.37095845     1 10
 2:  2 -0.56469817     1 10
 3:  3  0.36312841     1 10
 4:  4  0.63286260     1 10
 5:  5  0.40426832     1 10
 6:  6 -0.10612452     2 20
 7:  7  1.51152200     2 20
 8:  8 -0.09465904     2 20
 9:  9  2.01842371     2 20
10: 10 -0.06271410     2 20

我想按组总结一下x

代码语言:javascript
运行
复制
> dat[,.(mx=mean(x)), by=group]
   group        mx
1:     1 0.4413039
2:     2 0.6532896

完美地做到了这一点。然而,我也想继续使用gc,这是一些组特征,因此在组中是恒定的。我试过了

代码语言:javascript
运行
复制
> dat[,.(gc, mx=mean(x)), by=group]
    group gc        mx
 1:     1 10 0.4413039
 2:     1 10 0.4413039
 3:     1 10 0.4413039
 4:     1 10 0.4413039
 5:     1 10 0.4413039
 6:     2 20 0.6532896
 7:     2 20 0.6532896
 8:     2 20 0.6532896
 9:     2 20 0.6532896
10:     2 20 0.6532896

但这似乎是为dat中的每个原始条目创建回收mx。在SQL方式中,我认为

代码语言:javascript
运行
复制
dat[,.(gc=max(gc), mx=mean(x)), by=group]

可以做到这一点,但它只会产生一个错误。我想知道还有什么其他技巧可以获得:

代码语言:javascript
运行
复制
> res
   group gc        mx
1:     1 10 0.4413039
2:     2 20 0.6532896

我确信这个问题以前肯定发生过,但是我找不到答案--很有可能,因为我对这些类型的操作的元词汇表很小,并且我使用了错误的搜索词。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-09 18:34:59

我会这样做:

代码语言:javascript
运行
复制
dat[, .(gc = gc[1], mx = mean(x)), by = group]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57842815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档