繁体   English   中英

R数据表按组遗漏平均值

[英]R data table leave out mean by group

我正在寻找一种有效的解决方案,最好是在data.table中,以按组计算遗漏均值。 准确地说,对于id的每个值,我想计算每个组中剩余 id 值的平均值。 以下示例说明了我想要的内容:

group id value desired_output
a     1   10   17.5
a     2   15   15
a     3   20   12.5
b     4   10   20
b     4   15   20
b     5   20   12.5
df <- structure(list(group = c("a", "a", "a", "b", "b", "b"), id = c(1, 
2, 3, 4, 4, 5), value = c(10, 15, 20, 10, 15, 20)), class = "data.frame", row.names = c(NA, 
-6L))

我怎样才能做到这一点?

考虑均值的定义:

df[, ":="(sum_group = sum(value), n_group = .N), by = group]

df[, desired_output := (sum_group - sum(value)) / (n_group - .N), by = id]

#     group    id value sum_group n_group desired_output
#    <char> <num> <num>     <num>   <int>          <num>
# 1:      a     1    10        45       3           17.5
# 2:      a     2    15        45       3           15.0
# 3:      a     3    20        45       3           12.5
# 4:      b     4    10        45       3           20.0
# 5:      b     4    15        45       3           20.0
# 6:      b     5    20        45       3           12.5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM