计算组方差,同时排除当前观察
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.
在基础中,您可以将 ave
与 sapply
一起使用:
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))
我有一个数据框(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.
在基础中,您可以将 ave
与 sapply
一起使用:
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))