Я хочу, чтобы вычислить группу посредством переменной, но исключая фокусного ответчику:среднем по группе, удаление текущей строки
set.seed(1)
dat <- data.table(id = 1:30, y = runif(30), grp = rep(1:3, each=10))
Первая запись (ответчик) должен иметь в среднем ... второй .. и т.:
mean(dat[c==1, y][-1])
mean(dat[c==1, y][-2])
mean(dat[c==1, y][-3])
Для второй группы же:
mean(dat[c==2, y][-1])
mean(dat[c==2, y][-2])
mean(dat[c==2, y][-3])
Я попытался это, но он не работает:
ex[, avg := mean(ex[, y][-.I]), by=grp]
Любые идеи?
Я знаю, что могу сделать это следующим образом: '' 'dat [, avg: = (sum (y) -y)/(. N-1), by = c]' '', но я хотел бы справиться с отсутствующими данными. – sdaza
Возможно, 'sum (y, na.rm = TRUE)'? –
Мне нужно было бы отрегулировать .N, чтобы оценить допустимое среднее значение, как при использовании среднего (y, na.rm = TRUE) – sdaza