将连续变量分成相等大小的组
|
我需要将连续变量拆分/划分为3个大小相等的组。
示例数据框
das <- data.frame(anim=1:15,
wt=c(181,179,180.5,201,201.5,245,246.4,
189.3,301,354,369,205,199,394,231.3))
切掉后(根据wt
的值),我需要在新变量wt2
下有3个类,如下所示:
> das
anim wt wt2
1 1 181.0 1
2 2 179.0 1
3 3 180.5 1
4 4 201.0 2
5 5 201.5 2
6 6 245.0 2
7 7 246.4 3
8 8 189.3 1
9 9 301.0 3
10 10 354.0 3
11 11 369.0 3
12 12 205.0 2
13 13 199.0 1
14 14 394.0 3
15 15 231.3 2
这将适用于大型数据集
没有找到相关结果
已邀请:
10 个回复
授巨
如果要基于ѭ1的值进行分割,则
无论如何,您可以通过组合
,
和
来做到这一点。 更新 如果要将组索引作为附加列,则
如果该列的索引应为1,2,...,则
再次更新 尝试这个:
杭难插
包中的
,例如
注意,“ 16”将原始数据的范围分为三个等长的范围;如果数据分布不均匀,则不一定会导致每个组的观察次数相同(您可以通过适当地使用
来复制
的操作,但这是一个很好的便捷功能)。另一方面,使用
参数的ѭ19does确实被分位数分割,所以或多或少地等同于
。我可能以为到目前为止,类似ѭ13的东西会变成ѭ23的东西,但是据我所知还没有。
磐剩
函数的另一种解决方案。
眠缝
中的
开始这样做,但是对于with28ѭ\'s的表现却很奇怪。 我在下面的函数中使用了类似的代码,该函数在base R中起作用,并且等效于上面的
解决方案:
埠仙俊
要么
正如@ ben-bolker指出的那样,它分成相等的宽度而不是占用率。 我认为使用
可以近似占用
联海
,如果未指定明确的断点,则将值分成相同宽度的bin,通常它们将不包含相等数量的项:
和
使用分位数,如果数据分布良好且大小合适,通常将创建相同大小的组(就元素数量而言),但是并非总是如此。
可以给出不同的结果,但也基于分位数。 当数据包含少量不同值时,这些函数并不总是给出整洁的结果:
如果在此处找到最佳解决方案,则尚不清楚。 最好的分箱方法是一个主观问题,但是一种合理的解决方法是寻找使期望的分箱大小周围的方差最小的分箱。 (my)软件包
中的函数
提出了这样的功能。但是,它的计算量很大,应该保留给切点和唯一值很少的情况(通常在这种情况下很重要)。
我们看到小组之间的平衡要好得多。 如果基于差异的方法不够用,则调用中的“ 44”实际上可以由自定义函数代替,以根据需要优化或限制垃圾箱。
锑寝粒
中的
取一个向量和箱数(基于相等频率):
念炯
函数和
包中的
一起使用:
辅奈
您可以通过使用感兴趣的值的代表性样本来加快分位数计算。仔细检查
函数的文档。
绵扇寸访
。为了完善起见,这里提供了将连续转换为分类(合并)的3种方法。
:进行n组(大约)相等的观察数
:使n个组的距离相等
:按宽度排列 我要去的地方是cut_number(),因为它使用间隔均匀的分位数对观察值进行分箱。这是数据偏斜的示例。
由reprex软件包(v0.2.1)创建于2018-11-01