gpt4 book ai didi

r - R 中此 data.table 任务的正确语法是什么?

转载 作者:行者123 更新时间:2023-12-04 23:59:30 24 4
gpt4 key购买 nike

我有以下 data.tableR :

  library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=sample(rnorm(9)), v=1:9)

我只想通过列 x 计算最小值和最大值并将这两个新列添加到 DT .这是我的线路:
  DT[,c("e","d"):= list(min(y),max(y)), with=FALSE, by = x] 
Error in `[.data.table`(DT, , `:=`(c("e", "d"), list(min(y), max(y))), :
'with' must be TRUE when 'by' or 'keyby' is provided

尽管如此,如果我写: DT[,c("e","d"):= list(min(y),max(y)), with=FALSE] ,我明白了:
     x       y    v     e       d
1: a -1.7125000 4 -1.7125 1.30553
2: a 1.0198038 5 -1.7125 1.30553
3: a 1.3055301 6 -1.7125 1.30553
4: b -0.9238759 1 -1.7125 1.30553
5: b 0.3077016 2 -1.7125 1.30553
6: b -1.2580845 3 -1.7125 1.30553
7: c -0.9399120 7 -1.7125 1.30553
8: c -0.1910583 8 -1.7125 1.30553
9: c 0.1239158 9 -1.7125 1.30553

如您所见,这是有效的,但它没有通过 x 完成任务.我想获得类似的东西,但 ed应该由变量 x 的每个值计算.所以,我的问题是:我该如何解决这个问题?

最佳答案

:= by group”(1.8.2 版新增)和“:= 带有多个新列”(1.7.8 版新增)都是 的新成员。数据表 .

:= by group with multiple new columns”还没有(还)被实现。

所以现在,你可以这样做(如果你想要一个单线):

setkey(DT, "x")
DT <- DT[DT[,list(e=min(y), d=max(y)), by=key(DT)]]

或者这个(如果你想最小化额外的复制操作):
setkey(DT, "x")
DT[,e:=min(y), by=key(DT)]
DT[,d:=max(y), by=key(DT)]

关于r - R 中此 data.table 任务的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12356891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com