Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在r中创建一个binning变量以在其上汇总数据?_R - Fatal编程技术网

在r中创建一个binning变量以在其上汇总数据?

在r中创建一个binning变量以在其上汇总数据?,r,R,我想创建一个变量,该变量基于binwidth从另一个变量中存储值 如果我想基于计数创建一个bin变量,那么数据看起来应该是这样的,其中: 1 to 5 = 1 6 to 10 = 2 11 to 15 = 3 不需要手动重新编码每个箱子,在R中是否有这样的功能?是的,它被称为剪切功能 ? 剪切是的,它被称为剪切函数 ? cutcut函数实际上可以完成变量的装箱,同时将其保持为连续变量。您只需使用labels参数: myData$bucket <- cut(myData$counts, b

我想创建一个变量,该变量基于binwidth从另一个变量中存储值

如果我想基于计数创建一个bin变量,那么数据看起来应该是这样的,其中:

1 to 5 = 1
6 to 10 = 2
11 to 15 = 3

不需要手动重新编码每个箱子,在R中是否有这样的功能?

是的,它被称为剪切功能
? 剪切

是的,它被称为剪切函数
? cut

cut函数实际上可以完成变量的装箱,同时将其保持为连续变量。您只需使用labels参数:

myData$bucket <- cut(myData$counts, breaks = 30, labels = rep(1:30))

cut函数实际上可以完成变量的装箱,同时将其保持为连续变量。您只需使用labels参数:

myData$bucket <- cut(myData$counts, breaks = 30, labels = rep(1:30))
您可以使用通用切割函数。对于数值向量x,该方法具有以下参数:

>argscut.default 函数x,中断,标签=NULL,include.lowest=FALSE,right=TRUE, dig.lab=3L,排序结果=FALSE。。。 争论的焦点在这里。它是定义间隔的若干间隔或“断点”向量。请注意,默认情况下,所有间隔都是right open right=TRUE,因此通过创建一个对象x,包含从1到100的数字,并定义一个断点向量brk{1,20,50,100},您将在对结果使用表后获得这些结果:

>x brk tablecutx=x,breaks=brk 1,20] 20,50] 50,100] 19 30 50 您可以看到,第一个间隔是$1,\,20]$,因此1不是它的一部分,第一个观察值将成为丢失的值NA,因为定义的间隔之外的所有其他观察值都是NA。 通过设置include.lowest=TRUE,R包含最低值,即第一个间隔将关闭,因此我认为这将产生您想要的结果:

>x brk tablecutx=x,breaks=brk,include.lower=TRUE [1,20] 20,50] 50,100] 20 30 50 参数right反转整个过程,因此默认情况下间隔保持打开状态,并且include.lowest将关闭最后一个间隔,即包括最后一个类别中的最高值

由于生成的对象将是类因子,可以考虑将OrthDead结果设置为true,从而生成有序的对象类排序和因子。 标签等是可选的,请参见?切割。

您可以使用通用切割函数。对于数值向量x,该方法具有以下参数:

>argscut.default 函数x,中断,标签=NULL,include.lowest=FALSE,right=TRUE, dig.lab=3L,排序结果=FALSE。。。 争论的焦点在这里。它是定义间隔的若干间隔或“断点”向量。请注意,默认情况下,所有间隔都是right open right=TRUE,因此通过创建一个对象x,包含从1到100的数字,并定义一个断点向量brk{1,20,50,100},您将在对结果使用表后获得这些结果:

>x brk tablecutx=x,breaks=brk 1,20] 20,50] 50,100] 19 30 50 您可以看到,第一个间隔是$1,\,20]$,因此1不是它的一部分,第一个观察值将成为丢失的值NA,因为定义的间隔之外的所有其他观察值都是NA。 通过设置include.lowest=TRUE,R包含最低值,即第一个间隔将关闭,因此我认为这将产生您想要的结果:

>x brk tablecutx=x,breaks=brk,include.lower=TRUE [1,20] 20,50] 50,100] 20 30 50 参数right反转整个过程,因此默认情况下间隔保持打开状态,并且include.lowest将关闭最后一个间隔,即包括最后一个类别中的最高值

由于生成的对象将是类因子,可以考虑将OrthDead结果设置为true,从而生成有序的对象类排序和因子。


标签等是可选的。请参见?剪切。

因为看起来您想要得到的是数值结果而不是因子结果,请尝试类似truncmydata$count-1/5+1的方法

e、 g

还有天花板功能,它稍微简单一些:

mydata$bucket = ceiling(mydata$count/5)
看到了吗?圆的

因此,根据您的数据:

mydata = data.frame(spend=c(21,32,34,43,36,39,33,47,47,47,25,50,44,44) ,
                    count=c(3L,1L,2L,15L,1L,8L,1L,11L,15L,11L,3L,12L,11L,4L) )
mydata$bucket = ceiling(mydata$count/5)
其中:

> mydata
   spend count bucket
1     21     3      1
2     32     1      1
3     34     2      1
4     43    15      3
5     36     1      1
6     39     8      2
7     33     1      1
8     47    11      3
9     47    15      3
10    47    11      3
11    25     3      1
12    50    12      3
13    44    11      3
14    44     4      1

因为看起来您想要得到的是数值结果而不是因子结果,所以请尝试类似truncmydata$count-1/5+1的方法

e、 g

还有天花板功能,它稍微简单一些:

mydata$bucket = ceiling(mydata$count/5)
看到了吗?圆的

因此,根据您的数据:

mydata = data.frame(spend=c(21,32,34,43,36,39,33,47,47,47,25,50,44,44) ,
                    count=c(3L,1L,2L,15L,1L,8L,1L,11L,15L,11L,3L,12L,11L,4L) )
mydata$bucket = ceiling(mydata$count/5)
其中:

> mydata
   spend count bucket
1     21     3      1
2     32     1      1
3     34     2      1
4     43    15      3
5     36     1      1
6     39     8      2
7     33     1      1
8     47    11      3
9     47    15      3
10    47    11      3
11    25     3      1
12    50    12      3
13    44    11      3
14    44     4      1

谢谢,我确实知道切割函数,但希望将桶变量保持为连续变量?谢谢,我确实知道切割函数,但希望将桶变量保持为连续变量?你的箱子错了!看看最后三行,第二行和第三行把11和12放进了垃圾箱1。你的垃圾箱错了!看看最后三行,最后第二行和第三行将11和12放入了容器1。这是一个很好的答案。您知道如何创建桶,以使sp的比例相等吗
在每一桶中结束?对不起,我认为不止一种方法可以解释每一桶中支出的相等比例,所以你的问题并不明确——事实上,最好将其作为一个新问题发布。你是说观察次数相等,还是支出价值的总和相等?是的,我可能会发布一个新问题,但我的意思是支出的总和或平均数的比例相等。你可能可以使用加权计数分位数,使用Hmisc的wtd。分位数,这是一个很好的答案。你知道如何创建桶以便每个桶中的支出比例相等吗?对不起,我看到了多种解释每个桶中支出比例相等的方法,因此你的问题并不明确——事实上,最好将其作为新问题发布。你是说观察次数相等,还是支出值的总和相等?是的,我可能会作为一个新问题发帖,但我的意思是支出总和或平均数的比例相等。你可以使用Hmisc的wtd.quantile,使用计数的加权分位数,在Hmisc中,权重是基于支出的。