Bin Range в логике R-Max и Min для диапазона частот для каждой группы - PullRequest
0 голосов
/ 10 мая 2018

У меня есть набор данных ниже, где я хотел бы создать диапазон частот для каждой группы.

Я могу создать то же самое, но не могу настроить размер корзины для каждой группы.

Ниже приведены мои данные.

Date, Group, Sales
Jan-17, A , 1000
Feb-17, A , 1200
Mar-17, A , 700
Apr-17, A , 2000
May-17, A , 1800
Jan-17, B , 5000
Feb-17, B , 5800
Mar-17, B , 6800
Apr-17, B , 7000
May-17, B , 6000

Как видите, группа "A" лежит в диапазоне от 700 до 2000, а группа "B" - в диапазоне от 5000 до 7000. Мой текущий код назначает всю группу на основе одного и того же размера корзины, однако я бы хотел настроить корзину размер основан на макс-мин, деленном на 5 для каждой группы, т.е. здесь я хочу создать 5 разных корзин для каждой группы.

Следовательно, для A я хочу создать 5 ячеек для размера 280 [(2000-700) / 5 => 280], где начало должно быть [700-980], [980-1260], [1260-1540]. Аналогичный подход для группы B. Я хотел бы применить подход для максимума и минимума, как упомянуто выше для всей группы.

Кроме того, было бы замечательно, если бы я каким-то образом мог сопоставить корзину ([700-980]) с моим существующим фреймом данных. Не уверен, возможно ли это.

Ниже приведен мой существующий код со стандартным диапазоном размеров корзины.

df %>%
group_by(Group) %>%
mutate(freq=cut(Sales, breaks=seq(0,8000,by=50), include.lowest=TRUE))

Любые выводы будут высоко оценены.

Спасибо, J

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете сделать это, используя dplyr и группируя по Group перед использованием cut ...

library(dplyr)
df2 <- df %>% group_by(Group) %>% 
              mutate(bin=cut(Sales,
                             breaks=seq(min(Sales),max(Sales),length.out = 6),
                             include.lowest=TRUE,
                             dig.lab=50))

df2
   Date   Group Sales bin        
 1 Jan-17 A      1000 (960,1220] 
 2 Feb-17 A      1200 (960,1220] 
 3 Mar-17 A       700 [700,960]  
 4 Apr-17 A      2000 (1740,2000]
 5 May-17 A      1800 (1740,2000]
 6 Jan-17 B      5000 [5000,5400]
 7 Feb-17 B      5800 (5400,5800]
 8 Mar-17 B      6800 (6600,7000]
 9 Apr-17 B      7000 (6600,7000]
10 May-17 B      6000 (5800,6200]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...