计算组方差,同时排除当前观察

Calculate group variance while excluding current observation

我有一个数据框(DF), 这包括:年级和学校 ID。

我正在尝试创建一个 'Var_grade' 变量来计算属于同一学校的所有其他行的成绩方差,不包括当前学校。 我怎么能在 R 中做到这一点?

例如-

我试过运行这段代码-

DF<-DF %>% group_by(School)%>%
  mutate(Var_grade= combn(grade, (n()-1),  FUN=VAR))

但我收到了这条错误信息- 错误发生在第 1 组:School = 1

尝试以下操作:

library(dplyr)

DF %>% 
  group_by(School)%>%
  mutate(Var_grade = purrr::map_dbl(row_number(), ~var(grade[-.x])))

#  School grade Var_grade
#   <int> <dbl>     <dbl>
#1      1    90     112. 
#2      1    80      12.5
#3      1    95      50  
#4      2   100     108. 
#5      2    65     225  
#6      2    70     308. 
#7      2    85     358. 

在基础中,您可以将 avesapply 一起使用:

DF$Var_grade <- with(DF, ave(grade, School, FUN = function(x) 
                     sapply(seq_along(x), function(i) var(x[-i]))))

数据

DF <- data.frame(School = rep(1:2, c(3, 4)), 
                 grade = c(90, 80, 95, 100, 65, 70, 85))