gpt4 book ai didi

r - 按组平均,删除当前行

转载 作者:行者123 更新时间:2023-12-04 01:00:05 27 4
gpt4 key购买 nike

我想计算变量的组均值但不包括焦点受访者:

set.seed(1)
dat <- data.table(id = 1:30, y = runif(30), grp = rep(1:3, each=10))

第一条记录(受访者)的平均值应该是……第二条……依此类推:
mean(dat[c==1, y][-1])
mean(dat[c==1, y][-2])
mean(dat[c==1, y][-3])

第二组相同:
mean(dat[c==2, y][-1])
mean(dat[c==2, y][-2])
mean(dat[c==2, y][-3])

我试过这个,但没有用:
ex[, avg := mean(ex[, y][-.I]), by=grp]

有任何想法吗?

最佳答案

你可以试试这个解决方案:

set.seed(1)
dat <- data.table(id = 1:9, y = c(NA,runif(8)), grp = rep(1:3, each=3))

dat[, avg2 := sapply(seq_along(y),function(i) mean(y[-i],na.rm=T)), by=grp]

dat
# id y grp avg2
# 1: 1 NA 1 0.3188163
# 2: 2 0.2655087 1 0.3721239
# 3: 3 0.3721239 1 0.2655087
# 4: 4 0.5728534 2 0.5549449
# 5: 5 0.9082078 2 0.3872676
# 6: 6 0.2016819 2 0.7405306
# 7: 7 0.8983897 3 0.8027365
# 8: 8 0.9446753 3 0.7795937
# 9: 9 0.6607978 3 0.9215325

关于r - 按组平均,删除当前行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28442002/

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