繁体   English   中英

除了一个之外,平均所有变量组的值

[英]Average the value of all the variables groups except one

我有以下数据

 id    value

  a       2
  b       3
  c       4
  a       6

我希望得到排除组的所有数据的平均值。 换句话说,我想将当前的id分开并取其他所有ID的平均值,并为每个id重复它。 例如第一个把所有a开并采取平均的bc是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.

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