我有一个数据集,其中每个因子水平都有许多DV。 DV的数量/因数不一致。我想创建五分位数,以便对于因子的每个级别,将最小25%的值分配给bin 1,然后将最小25%的值分配给bin2,依此类推,
我发现了一个具有NEAR完美解决方案的软件包:schoRsch,其中ntiles函数根据因子水平创建容器,如下所示:
library(schoRsch)
#{
dv <- c(5, 2, 10, 15, 3, 7, 20, 44, 18)
factor <- c(1,1,2,2,2,2,3,3,3)
tmpdata <- data.frame(cbind(dv,factor))
tmpdata$factor <- as.factor(tmpdata$factor)
head(tmpdata)
tmpdata$bins <- ntiles(tmpdata, dv = "dv", bins=2, factors = "factor")
tmpdata
#}
输出如下:
dv factor bins
1 5 1 2
2 2 1 1
3 10 2 2
4 15 2 2
5 3 2 1
6 7 2 1
7 20 3 2
8 44 3 2
9 18 3 1
我的问题发生在特定因子水平的DV数不能被箱数整除的情况下。在上面的示例中,因子3有3个观测值,当分类为两个箱时,第一个箱具有一个观测值,第二个箱具有2观测值。第二个等等。例如,在我的实际数据集中,我有一个因数与79个相关的DV和5个仓位有关。因此,我希望在1-4号箱中每个仓库中有16个观测值,然后在5号箱中15个观测值。但是这种方法在1号箱和3号箱中给我16个观测值,在2号箱中给我15个观测值。
有什么方法可以在此处指定所需的装箱顺序吗?还是有另一种方法可以解决我的问题,而另一种方法可以让我根据一个因素或更准确地说是多个因素进行分类?
谢谢!
答案 0 :(得分:0)
像这样吗?
unio