全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1681 6
2017-04-28
代码如下,跑了两个小时~请问有没有哪些地方可以优化?谢谢大神们!

#导入数据
library(xlsx)
workbook<-"D:/R-3.3.1/实例/收入测算/基础数据.xlsx"
NBEV<-read.xlsx(workbook,sheetName="NBEV")
renli<-read.xlsx(workbook,3)
BWFYP<-read.xlsx(workbook,sheetName="BWFYP")
xuqi<-read.xlsx(workbook,9)
jxlv<-read.xlsx(workbook,10)
qita<-read.xlsx(workbook,11)
chuyong<-read.xlsx(workbook,4)
xljt<-read.xlsx(workbook,5)
wangxiao<-read.xlsx(workbook,6)
gljt<-read.xlsx(workbook,7)
jili<-read.xlsx(workbook,8)
jili.M<-read.xlsx(workbook,13) #经理激励,常数不变
I.Jan<-read.xlsx(workbook,12)[8,2]
a.chuyong<-chuyong[,2]
b.chuyong<-chuyong[,3]
c.chuyong<-chuyong[,4] #初佣系数

a.xljt<-xljt[,2]
b.xljt<-xljt[,3] #训练津贴系数

a.wangxiao<-wangxiao[,2] #网销系数

a.gljt<-gljt[,2]
b.gljt<-gljt[,3]
c.gljt<-gljt[,4] #管理津贴系数

a.jili<-jili[,2] #激励系数,除去经理

#正式1年内NBEV每月增长i/100
#正式1-2年NBEV每月增长j/100
#正式2年以上NBEV每月增长k/100
i<-0:50
j<-0:50
k<-0:50
Percent<-expand.grid(i,j,k)
new.NBEV<-as.data.frame(matrix(0.00000001,nrow=8,ncol=11))
NBEV0<-as.data.frame(matrix(0,nrow=8,ncol=11))
myfun<-function(x){
newN7<-NBEV[7,]-NBEV[3,]*x[1]/100-NBEV[4,]*x[2]/100-NBEV[5,]*x[3]/100
#增长后的NBEV
if(sum(newN7>0)==11){
new.NBEV[1,]<-NBEV[1,]
new.NBEV[2,]<-NBEV[2,]
new.NBEV[3,]<- NBEV[3,]*(1+x[1]/100)
new.NBEV[4,]<- NBEV[4,]*(1+x[2]/100)
new.NBEV[5,]<- NBEV[5,]*(1+x[3]/100)
new.NBEV[6,]<-NBEV[6,]
new.NBEV[8,]<-NBEV[8,]
new.NBEV[7,]<-NBEV[7,]-NBEV[3,]*x[1]/100-NBEV[4,]*x[2]/100-NBEV[5,]*x[3]/100
}
rj.NBEV<-new.NBEV*10000/renli #新的人均NBEV

#计算初佣收入
I.chuyong<-a.chuyong*rj.NBEV^2+b.chuyong*rj.NBEV+c.chuyong
#训练津贴
I.xljt<-a.xljt*log(rj.NBEV)+b.xljt
#网销
I.wangxiao<-a.wangxiao*BWFYP
#管理津贴
NBEV0[6,]<-apply(new.NBEV[1:5,],2,sum)
NBEV0[7,]<-apply(new.NBEV[1:6,],2,sum)
I.gljt<-a.gljt*NBEV0^2++b.gljt*NBEV0+c.gljt
#激励
I.jili<-a.jili*new.NBEV+jili.M

#总收入
Income0<-I.chuyong*renli+I.xljt*renli+I.wangxiao*10000+I.gljt*10000+I.jili*10000+xuqi*renli+jxlv*renli+qita
Income<-sum(apply(Income0[1:7,],2,sum))/10000+I.Jan
lab<-c(x[1],x[2],x[3],Income)
return(lab)
}
timestart<-Sys.time();
y<-apply(Percent,1,myfun)
timeend<-Sys.time()
runningtime<-timeend-timestart
print(runningtime)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-4-28 10:44:42
不错 学习学习~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-4-28 10:49:18
&lt;应该是<
复制过来有些符号乱码了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-4-28 10:50:30
#导入数据
library(xlsx)
workbook<-"D:/R-3.3.1/实例/收入测算/基础数据.xlsx"
NBEV<-read.xlsx(workbook,sheetName="NBEV")
renli<-read.xlsx(workbook,3)
BWFYP<-read.xlsx(workbook,sheetName="BWFYP")
xuqi<-read.xlsx(workbook,9)
jxlv<-read.xlsx(workbook,10)
qita<-read.xlsx(workbook,11)
chuyong<-read.xlsx(workbook,4)
xljt<-read.xlsx(workbook,5)
wangxiao<-read.xlsx(workbook,6)
gljt<-read.xlsx(workbook,7)
jili<-read.xlsx(workbook,8)
jili.M<-read.xlsx(workbook,13) #经理激励,常数不变
I.Jan<-read.xlsx(workbook,12)[8,2]

a.chuyong<-chuyong[,2]
b.chuyong<-chuyong[,3]
c.chuyong<-chuyong[,4] #初佣系数

a.xljt<-xljt[,2]
b.xljt<-xljt[,3]   #训练津贴系数

a.wangxiao<-wangxiao[,2]  #网销系数

a.gljt<-gljt[,2]
b.gljt<-gljt[,3]
c.gljt<-gljt[,4] #管理津贴系数

a.jili<-jili[,2] #激励系数,除去经理

#正式1年内NBEV每月增长i/100
#正式1-2年NBEV每月增长j/100
#正式2年以上NBEV每月增长k/100
i<-0:50
j<-0:50
k<-0:50
Percent<-expand.grid(i,j,k)
new.NBEV<-as.data.frame(matrix(0.00000001,nrow=8,ncol=11))
NBEV0<-as.data.frame(matrix(0,nrow=8,ncol=11))
myfun<-function(x){
newN7<-NBEV[7,]-NBEV[3,]*x[1]/100-NBEV[4,]*x[2]/100-NBEV[5,]*x[3]/100
#增长后的NBEV
if(sum(newN7>0)==11){
new.NBEV[1,]<-NBEV[1,]
new.NBEV[2,]<-NBEV[2,]
new.NBEV[3,]<- NBEV[3,]*(1+x[1]/100)
new.NBEV[4,]<- NBEV[4,]*(1+x[2]/100)
new.NBEV[5,]<- NBEV[5,]*(1+x[3]/100)
new.NBEV[6,]<-NBEV[6,]
new.NBEV[8,]<-NBEV[8,]
new.NBEV[7,]<-NBEV[7,]-NBEV[3,]*x[1]/100-NBEV[4,]*x[2]/100-NBEV[5,]*x[3]/100
}
rj.NBEV<-new.NBEV*10000/renli #新的人均NBEV

#计算初佣收入
I.chuyong<-a.chuyong*rj.NBEV^2+b.chuyong*rj.NBEV+c.chuyong
#训练津贴
I.xljt<-a.xljt*log(rj.NBEV)+b.xljt
#网销
I.wangxiao<-a.wangxiao*BWFYP
#管理津贴
NBEV0[6,]<-apply(new.NBEV[1:5,],2,sum)
NBEV0[7,]<-apply(new.NBEV[1:6,],2,sum)
I.gljt<-a.gljt*NBEV0^2++b.gljt*NBEV0+c.gljt
#激励
I.jili<-a.jili*new.NBEV+jili.M

#总收入
Income0<-I.chuyong*renli+I.xljt*renli+I.wangxiao*10000+I.gljt*10000+I.jili*10000+xuqi*renli+jxlv*renli+qita
Income<-sum(apply(Income0[1:7,],2,sum))/10000+I.Jan
lab<-c(x[1],x[2],x[3],Income)
return(lab)
}
timestart<-Sys.time();
y<-apply(Percent,1,myfun)
timeend<-Sys.time()
runningtime<-timeend-timestart
print(runningtime)


重发一次
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-4-28 10:52:00
番茄爱吃鱼 发表于 2017-4-28 10:44
不错 学习学习~~~
感觉有点慢,不知道哪里可以优化一下,共同讨论一下吧~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-4-28 11:30:53
manfanshe 发表于 2017-4-28 10:52
感觉有点慢,不知道哪里可以优化一下,共同讨论一下吧~~
给个小建议啊,贴代码的话可以单击“<>”插入代码,易读些。read.xlsx读excel数据比较慢,试试readxl包read_excel
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群