[英]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.