根据几个条件优化数据集

时间:2015-02-02 11:32:49

标签: r subset solver optimization

我正在尝试根据几个条件从大型数据集构建(最佳)子集。我知道构建这样一个子集有一些可能性。例如,请参阅:this link。我尝试过这个功能,但是它不能令人满意,因为要找到这样一个子集需要很长时间,而且可能不是"智能"足够。您可以在下面找到一些示例数据

data <- data.table(id=rep(c("a","b","c","d","e","f"),3),
               balance=c(1000,2000,1500,2000,4000,1500,
                         800,2000,1300,1800,2000,500,
                         700,1900,1100,1600,500,30),
               rate=c(1100,1500,1000,700,300,200,
                      400,700,500,1300,1600,700,
                      800,1100,1200,700,400,150),
               grade=c(70,100,90,50,150,40,
                       30,80,55,80,85,20,
                       35,70,55,75,15,10),
               date= rep(c(2012,2013,2014),each=6))

data_agg <- aggregate(cbind(rate, grade) ~ date, data = data.frame(data),sum,na.rm=T)
data_agg$ratio <- data_agg$rate / data_agg$grade

> data_agg$ratio    
[1]  9.60000 14.85714 16.73077

现在,目标是(例如)最小化多年来data_agg $比率的增加,同时在该子集中包括至少3个id。

通过查看我们看到的数据,例如dat ID ==&#34; e&#34; 2012年的比率为300/150 = 2,2013年为1600/85 = 19,2014年为400/15 = 27。我的回答是为了尽量减少多年来的增长,从而删除&#34; e&# 34;可能会对子集产生可摧毁的影响。

datasubset <-subset(data, subset = id!=c("e"))

data_aggsubset <- aggregate(cbind(rate, grade) ~ date, data = data.frame(datasubset),sum,na.rm=T)
data_aggsubset$ratio <- data_aggsubset$rate / data_aggsubset$grade

data_aggsubset$ratio
[1] 12.85714 13.58491 16.12245

事实上,这个比例多年来一直比较稳定。因此,我的问题是是否存在一些优化器功能,其寻找ID以使得该比率例如是在起始值的+/- 50%的带宽内(本例中为9.6)并且包含至少三个ID。我的原始数据集很大,因此我正在寻找比我在链接中添加的功能更智能的功能。如果有任何不清楚的地方,请告诉我。提前谢谢!

0 个答案:

没有答案
相关问题