Как рассчитать совокупные значения "по ведрам"? - PullRequest
0 голосов
/ 01 октября 2018

Я хотел бы рассчитать агрегированные значения набора данных путем "объединения" значения по байт в R. Я не уверен, как это называется, но позвольте мне проиллюстрировать на примере mtcars набор данных.Если я бегу

aggregate(mtcars$mpg, by = list(disp = mtcars$disp), median)

, я получаю:

    disp    x
1   71.1 33.9
2   75.7 30.4
3   78.7 32.4
4   79.0 27.3
5   95.1 30.4

Это миль на галлон автомобилей по объему.Тем не менее, каждое смещение в результате.Как запустить эту функцию, чтобы она сгруппировала смещения в несколько сегментов, скажем, каждые 50 или 20?Примерно так:

    disp    x
1   60-80   33.9
2   80-100  30.4
3   100-120 32.4
4   120-140 27.3
5   140-160 30.4

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Для полноты, data.table подход:

require(data.table)
setDT(mtcars)
mtcars[, median(mpg), by = .(dispRanges = cut(disp, 5))]
0 голосов
/ 01 октября 2018
mtcars %>%
  group_by(disp = cut(disp, breaks = 20*0:100)) %>%
  summarize(x = median(mpg))

# A tibble: 15 x 2
   disp          x
   <fct>     <dbl>
 1 (60,80]    31.4
 2 (80,100]   30.4
 3 (100,120]  22.8
 4 (120,140]  21.5
 5 (140,160]  21  
 6 (160,180]  18.5
 7 (220,240]  18.1
 8 (240,260]  21.4
 9 (260,280]  16.4
10 (300,320]  15.2
11 (340,360]  15.0
12 (380,400]  19.2
13 (420,440]  14.7
14 (440,460]  10.4
15 (460,480]  10.4
...