R中的Bin范围-每组频率范围的最大和最小逻辑

R中的Bin范围-每组频率范围的最大和最小逻辑,r,R,我有下面的数据集,我想为每个小组创建频率范围 我可以创建相同的,但是不能为每个组自定义垃圾箱的大小 下面是我的数据的样子 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

我有下面的数据集,我想为每个小组创建频率范围

我可以创建相同的,但是不能为每个组自定义垃圾箱的大小

下面是我的数据的样子

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个不同的仓位

因此,对于一个实例,我想为大小为280[(2000-700)/5=>280]的容器创建5个,其中起始位置应为[700-980]、[980-1260]、[1260-1540]。B组采用类似的方法。我想对最大值和最小值采用上述方法,适用于所有组

另外,如果我能找到一种方法将Bin([700-980])映射到我现有的数据帧,那就太好了。我不确定这是否可行

下面是我现有的代码和标准的箱子大小范围

df %>%
group_by(Group) %>%
mutate(freq=cut(Sales, breaks=seq(0,8000,by=50), include.lowest=TRUE))
任何线索都将不胜感激

谢谢,
J

在使用
cut
之前,您可以使用
dplyr
并按
Group
分组

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]
库(dplyr)
df2%组别单位(组别)%>%
变异(bin=削减(销售、,
中断=顺序(最小(销售)、最大(销售)、长度=6),
include.lowest=TRUE,
挖掘实验室=50)
df2
日期组销售箱
2017年1月1日A 1000(9601220)
二月二日至十七日1200(9601220)
2017年3月3日A 700[700960]
2000年4月4日至17日(17402000)
5月5日至17日A 1800(17402000)
2017年1月6日B 5000[50005400]
2月7日至17日B 5800(54005800)
2017年3月8日B 6800(66007000)
2017年4月9日B 7000(66007000)
5月10日至17日B 6000(58006200)

在使用
cut
之前,您可以使用
dplyr
并按
Group
分组

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]
库(dplyr)
df2%组别单位(组别)%>%
变异(bin=削减(销售、,
中断=顺序(最小(销售)、最大(销售)、长度=6),
include.lowest=TRUE,
挖掘实验室=50)
df2
日期组销售箱
2017年1月1日A 1000(9601220)
二月二日至十七日1200(9601220)
2017年3月3日A 700[700960]
2000年4月4日至17日(17402000)
5月5日至17日A 1800(17402000)
2017年1月6日B 5000[50005400]
2月7日至17日B 5800(54005800)
2017年3月8日B 6800(66007000)
2017年4月9日B 7000(66007000)
5月10日至17日B 6000(58006200)

谢谢..我试过了,但是它仍然以某种方式获取了整个范围,而不是为范围内的组选择范围。不确定为什么会发生同样的情况。除了dplyr包中的现有代码之外,还有其他选择吗?不确定为什么它对你不起作用-对我不起作用。我认为
剪切
是解决问题的标准方法在
dplyr
或其他方式中执行这类操作,尽管使用
data.table
-.@Jay-除了
dplyr
之外,您可能还加载了其他软件包吗?是的。当前有多个软件包,运行此代码时是否只安装dplyr,然后删除其他软件包。。我试过了,但是它仍然以某种方式获取了整个范围,而不是为范围内的组选择范围。不确定为什么会发生同样的情况。除了dplyr包中的现有代码之外,还有其他选择吗?不确定为什么它不适用于您-它适用于我。我认为
cut
是执行此类操作的标准方法事情,无论是在
dplyr
中还是在其他地方,尽管要了解使用
数据的方法,请参见此问题。table
-.@Jay-除了
dplyr
是之外,您是否可能还加载了其他软件包。当前有多个软件包,我是否应该在运行此代码时只安装dplyr,然后删除其他软件包