1
A
回答
1
您可能会遇到组合爆炸。这模拟了从一组20个工资组合中选择3个工资组合的平均值为60和20的薪水。它显示,从1140个组合的计数中可以发现,只有263个工资总和低于150.
> sum(apply(combn(1:20,3) , 2, function(x) sum(salry[x, "sals"]) < 150))
[1] 200
> set.seed(123)
> salry <- data.frame(EEnams = sapply(1:20 ,
function(x){paste(sample(letters[1:20], 6) ,
collapse="")}), sals = rnorm(20, 60, 20))
> head(salry)
EEnams sals
1 fohpqa 67.59279
2 kqjhpg 49.95353
3 nkbpda 53.33585
4 gsqlko 39.62849
5 ntjkec 38.56418
6 trmnah 66.07057
> sum(apply(combn(1:NROW(salry), 3) , 2, function(x) sum(salry[x, "sals"]) < 150))
[1] 263
如果你有1000 EE的,那么你将有:
> choose(1000, 3) # Combination possibilities
# [1] 166,167,000 Commas added to output
1
一种方法是从完整的数据框开始,并举例说明一种情况。创建一个数据框,该数据框由薪水低于约束的所有案例减去选定的工资组成。从中选择第二个案例,并重复创建剩余案例集以供选择的过程。如果达到需要的数量(3),或者在任何时候数据框中没有任何案例可供选择(停止目前的操作并重新开始采样过程),请停止。
请注意,不同的方法会为包含的情况创建不同的概率分布;一般来说它不会是统一的。
1
你的数据集有多大?如果它很小(并且很小取决于你的硬件),你可以列出所有三个组,计算总和,并从中抽样。
## create data frame
N <- 100
salary <- rnorm(N))
## list all possible groups of 3 from this
x <- combn(salary, 3)
## the sum
sx <- colSums(x)
sxc <- sx[sx<1]
## sampling with replacement
sample(sxc, 10, replace=TRUE)
相关问题
- 1. 具有约束的专业化
- 2. 具有度量约束的泛型类
- 3. AngularJS - $ scope变量不具有约束力
- 4. 具有约束力的knockout.js
- 5. 如何矢量化茱莉亚凸不等式约束
- 6. 矢量化样本函数:从样本群体中抽取样本并创建抽样矢量列表
- 7. 在没有标签的约束排序中绘制矢量
- 8. 矢量化环具有重复指数
- 9. 矢量化版本
- 10. 雄辩 - 具有()约束
- 11. 生成具有约束
- 12. 具有唯一约束
- 13. 构造具有度约束
- 14. 具有适当比率约束和重量约束的背包算法
- 15. scipy.optimize.leastsq有约束约束
- 16. 约束优化R建立约束
- 17. 具有约束条件的Java多变量非线性优化程序库
- 18. Knockout复杂变量不具约束力
- 19. 如何同时具有宽度约束和等宽约束
- 20. 具有等式约束的Nelder-Mead优化
- 21. 约束数量
- 22. 具有约束力的工作不
- 23. 应用通过具有约束力的
- 24. 具有参数约束的F#函数
- 25. 删除具有外键约束的行
- 26. 具有多个“LIKE”约束的TableAdapter
- 27. 约束具有不等式的规范
- 28. 具有n个变量且有约束的方程的解的数量
- 29. 矢量初始化矢量
- 30. 矢量具有指针
根据什么数据集的样子,有可能做一些子集计算组合之前缩小它。例如,您可以摆脱任何超过总数减去两个最小值的薪水。 –
是的,随机选择可以通过估计需要多少来指导。如果知道平均工资亩,三者的总和就意味着3 *亩,然后用sd()和pnorm()来决定样本的哪一部分就足够了。 –