gpt4 book ai didi

r - 非对等加入,然后分组汇总

转载 作者:行者123 更新时间:2023-12-04 11:33:48 26 4
gpt4 key购买 nike

这是一个 MWE。

dta <- data.table(id=rep(1:2, each=5), seq=rep(1:5, 2), val=1:10)
dtb <- data.table(id=c(1, 1, 2, 2), fil=c(2, 3, 3, 4))
dtc <- data.table(id=c(1, 1, 2, 2), mval=rep(0, 4))
for (ind in 1:4) dtc$mval[ind] <- mean( dta$val [dta$id == dtb$id[ind] & dta$seq < dtb$fil[ind]] )

dtc
# id mval
# 1: 1 1.0
# 2: 1 1.5
# 3: 2 6.5
# 4: 2 7.0

dtc 应与 dtb 具有相同的行数。每(行) ind在 dtc 中,
  • dtc$id[ind] = dtb$id[ind] .
  • dtc$mval[ind] = mean(dta$val[x]) ,其中 x 是 dta$id == dtb$id[ind] & dta$seq < dtb$fil[ind] .

  • 我的 data.tables 非常大。因此,我正在寻找一种以最小的内存占用实现上述目标的方法。我正在考虑非平等加入,然后进行总结,但我似乎无法让它发挥作用。因此,问题的标题。

    非常感谢任何帮助,谢谢!

    最佳答案

    可能这有帮助

    dtc[, mval := dta[dtb, mean(val) ,on =.(id, seq < fil), by = .EACHI]$V1]
    dtc
    # id mval
    #1: 1 1.0
    #2: 1 1.5
    #3: 2 6.5
    #4: 2 7.0

    关于r - 非对等加入,然后分组汇总,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39555361/

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