【发布时间】:2020-08-03 04:19:24
【问题描述】:
我正在使用以下代码来计算每个班级的分组平均值。我需要每个类的平均值,将其放在每一行上,但忽略公式中每一行的值(参见expected_mean 列)。虽然 DT 方法确实计算了平均值,但它不会忽略每一行(请参阅列 value_mean)。
## create dataset
dataset <- data.frame(matrix(ncol = 2, nrow = 6))
colnames(dataset) <- c('class','value')
dataset$class <- c(rep('A',3),rep('B',3))
dataset$value <- 1:6
## convert to DT and aggregate
setDT(dataset)
dataset[, value_mean := mean(value), by=class]
## expected means (without itself)
dataset$expected_means <- c(2.5,2,1.5,5.5,5,4.5)
这会返回:
class value value_mean expected_means
A 1 2 2.5
A 2 2 2.0
A 3 2 1.5
B 4 5 5.5
B 5 5 5.0
B 6 5 4.5
我需要计算每个类的平均值,将其放在每行中,但同时忽略当前值。例如,对于第一行,而不是(1+2+3)/3,它应该只做(2+3)/2
【问题讨论】: