удаление шумов с одинаковой глубиной биннинга в R путем замены каждого бина на его среднее значение или медиану - PullRequest
0 голосов
/ 11 марта 2019

Например, у меня есть такой вектор:

a <- c(4, 8, 9, 15, 21, 21, 24, 25, 26, 28, 29, 34)

, и я хочу сделать это:

Шаг 1:

Разделение на равные частоты (экви- глубина)

Бункеры:

  • Бункер 1: 4, 8, 9, 15

  • Бин 2: 21,21, 24, 25

  • Бункер 3: 26, 28, 29, 34

Шаг 2:

Сглаживание биномозначает:

  • Корзина 1: 9, 9, 9, 9

  • Корзина 2: 23, 23, 23, 23

  • Корзина 3: 29, 29, 29, 29

Выход:

9,9,9,9,23,23,23,23,29,29,29,29

Ответы [ 2 ]

3 голосов
/ 11 марта 2019

Мы можем создать группы, разделив length на a на равное количество бинов и используя ave для вычисления округленных mean в каждой группе.

no_of_bins <- 4
round(ave(a, rep(1:length(a), each = no_of_bins, length.out = length(a))))
#[1]  9  9  9  9 23 23 23 23 29 29 29 29

PS -

  • ave имеет функцию по умолчанию как mean, поэтому она не была применена явно.
1 голос
/ 11 марта 2019

Попробуйте это (возьмите Orange $ age предопределенную переменную R в качестве входных данных, 10 - размер корзины)

v=split(Orange$age, ceiling(seq_along(Orange$age)/10))
lapply(v, function(item){rep(mean(item), length(item))})
...