Получить средние значения столбца для набора строк, используя R - PullRequest
0 голосов
/ 01 ноября 2019

Я пытаюсь получить среднее значение столбца в определенном диапазоне строк. Например, предположим:

data.frame(x=c(.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9))

Мне нужно среднее значение строк 1-3, 4-6 и 7-9 в новом кадре данных, который выглядит следующим образом:

data.frame(x=c(0.2, 0.5, 0.8)

Однако у меня более 15 000 строк, и я хочу взять в среднем по 20 строк за каждый столбец. Есть ли хороший способ сделать это? Я думаю, что делать что-то с подмножеством colMeans () лучше, но я очень новичок в R.

Спасибо!

1 Ответ

1 голос
/ 01 ноября 2019

Вот способ использования .colMeans(), который дает желаемый результат.

dat <- data.frame(x=c(.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9))
> .colMeans(x = dat$x, m = 3, n = nrow(dat)/3, na.rm = T )
[1] 0.2 0.5 0.8

тестирование на большем data.frame:

> dat <- data.frame(x = rnorm(15000))
> 
> # Start timer
> tic()
> w <- .colMeans(x = dat$x, m = 3, n = nrow(dat)/3, na.rm = T )
> 
> # End timer
> toc()
0.01 sec elapsed
> 
> print(length(w))
[1] 5000

Это немного быстрее, чем метод, предложенный db:

> tic()
> w2 <- aggregate(. ~ grp, transform(dat, grp = ceiling(seq_along(x)/3)), mean)
> toc()
0.1 sec elapsed
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...