[英]Average the value of all the variables groups except one
我有以下数据
id value
a 2
b 3
c 4
a 6
我希望得到排除组的所有数据的平均值。 换句话说,我想将当前的id分开并取其他所有ID的平均值,并为每个id重复它。 例如第一个把所有a
开并采取平均的b
和c
是3.5(平均3和4),所以,我希望有以下输出:
id value
a 3.5
b 4
c 3.66
我的数据
df <- data.frame(id = c("a", "b", "c" , "a"), value = c(2,3,4,6) )
请注意,此问题与平均每个组不同
一个选项是data.table
library(data.table)
setDT(df)[, .(value = (sum(df$value) - sum(value))/(nrow(df)-.N)) , by = id]
# id value
#1: a 3.500000
#2: b 4.000000
#3: c 3.666667
如果我们需要6和5.5代表'ids''b'和'c'
setDT(df)[, .(value = (sum(df$value) - sum(value))/(uniqueN(df$id)-1)) , by = id]
# id value
#1: a 3.5
#2: b 6.0
#3: c 5.5
plyr::ddply(df,'id',function(x){ c(value = mean(df[with(df,id != x$id[1]),]$value)) })
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.