How to use a script on multiple excel working sheets in r studio -


i have rather long script, @ least me, i'm new in r.

it looks

#data loaded library(xlsx) df=read.xlsx2("/users/emiliemariafalkkallenbach/documents/norsk_institut_for_vandforskning/chase_dk.xlsx",sheetindex=1) df[df==""]<- na  df=data.matrix(df) df=data.frame(df) attach(df) phyto=df[,1:6] submerged=df[,7:12] benthic=df[13:18]   # phtyoplankton  #making of boundaries  a<-(ifelse(p_resp<=0,(1-p_acdev),1/(1+p_acdev))) b=(0.95+a)/2 c=2*a-b d=2*c-a #weighted boundaries  e=0.95*p_weight e=sum(e) f=b*p_weight f=sum(f) g=a*p_weight g=sum(g) h=c*p_weight g=sum(g) i=d*p_weight i=sum(i) #eqr weighted  j=p_eqr*p_weight j=sum(j) #complete l <- ifelse(is.na(rowsums(phyto)),1,0) m=sum(l)   #submerged vegetation #overall assesment  y=ifelse(m<=0,j,"") z=ifelse(y!="na",0,(ifelse(y>f,1,(ifelse(y>g,2,(ifelse(y>h,3,(ifelse(y>i,4,5)))))))))   #making of boundaries  a.sub<-(ifelse(s_resp<=0,(1-s_acdev),1/(1+s_acdev))) a.sub=sum(a.sub) b.sub=(0.95+a.sub)/2 b.sub=sum(b.sub) c.sub=2*a.sub-b.sub c.sub=sum(c.sub) d.sub=2*c.sub-a.sub d.sub=sum(d.sub) #weighted boundaries  e.sub=0.95*s_weight e.sub=sum(e) f.sub=b.sub*s_weight f.sub=sum(f) g.sub=a.sub*s_weight g.sub=sum(g) h.sub=c.sub*s_weight h.sub=sum(h) i.sub=d.sub*s_weight i.sub=sum(i) #eqr.sub weighted  j.sub=s_eqr*s_weight j.sub=sum(j.sub) #complete.sub l.sub <- ifelse(is.na(rowsums(submerged)),1,0) m.sub=sum(l.sub) #overall assesment q.sub=m.sub*0.75 y.sub=ifelse(m.sub<=0,j.sub,"") z.sub=ifelse(y.sub!="na",(ifelse(y.sub>f.sub,1,(ifelse(y.sub>g.sub,2,(ifelse(y.sub>h.sub,3,(ifelse(y.sub>i.sub,4,5)))))))),0)  benthic invertebrates #making of boundaries  a.ben<-(ifelse(b_resp<=0,(1-b_acdev),1/(1+b_acdev))) b.ben=(0.95+a.ben)/2 c.ben=2*a.ben-b.ben d.ben=2*c.ben-a.ben #weighted boundaries  e.ben=0.95*b_weight e.ben=sum(e.ben) f.ben=b.ben*b_weight f.ben=sum(f.ben) g.ben=a.ben*b_weight g.ben=(sum(g.ben)) h.ben=c.ben*b_weight h.ben=sum(h.ben) i.ben=d.ben*b_weight i.ben=sum(i.ben) #eqr weighted  j.ben=b_eqr*b_weight #complete l.ben <- ifelse(is.na(rowsums(benthic)),1,0) m.ben=sum(l.sub) #chkaccdev n.ben=ifelse(b_resp>0,0.53,1.1) o.ben=ifelse(b_acdev<0.15,-1,0) p.ben=ifelse(b_acdev>n.ben,1,o.ben) #overall assesment q.ben=m.ben*0.75 y.ben=ifelse(m.ben<1,j.ben,"") z.ben=ifelse(y.ben!="na",ifelse(y.ben>f.ben,1,(ifelse(y.ben>g.ben,2,(ifelse(y.ben>h.ben,3,(ifelse(y.ben>i.ben,4,5))))))),0)  #final assesment z=max(na.omit(c(z,z.sub,z.ben)))  #overall assesment  score=(ifelse(z<=1 && z<2,"high",(ifelse(z>=2 && z<3,"good",(ifelse(z>=3 && z<4,"moderate",(ifelse(z>=4 && z<5,"bad",(ifelse(z>=5,"poor","na")))))))))) score   #pie chart  library('plotrix') phyto=33.3 submerged=33.3 benthic=33.3 total=100 slices1=c=(1) total=100 inir=0.2  slices1=c=(1) pie(1, radius=inir, init.angle=90, col=c('white'), border = na, labels='overall') colors=c(ifelse(z<=1,"blue", ifelse(z<=2,"green",ifelse(z<=3,"yellow",ifelse(z<=4,"orange",ifelse(z<=5,"red","red"))))), ifelse(z.sub<=1,"blue", ifelse(z.sub<=2,"green", ifelse(z.sub<=3,"yellow",ifelse(z.sub<=4,"orange",ifelse(z.sub<=5,"red","red"))))),ifelse(z.ben<=1,"blue", ifelse(z.ben<=2,"green", ifelse(z.ben<=3, "yellow", ifelse(z.ben<=4,"orange",ifelse(z.ben<=5,"red","red")))))) floating.pie(0,0,c(phyto, submerged, benthic),radius=5*inir, startpos=pi/2, col=colors,border=na) slices1=c=(1) total=100 inir=0.2 # initial radius colorst=c(ifelse(z<=1,"blue", ifelse(z<=2,"green",ifelse(z<=3,"yellow",ifelse(z<=4,"orange",ifelse(z<=5,"red","red")))))) floating.pie(0,0,c(total),radius=3*inir, startpos=pi/2, col=colorst,border=na) angles=as.numeric(c(-10,75,80)) pie.labels(0,0,angles,c("phyto","submerged","benthic"),radius=1, bg="white") pie.labels(0,0,0,c("overall assessment"),radius=-0.3) 

i guess not matter, script. @ moment runs first sheet in excel, have several , run them on of them.

the outcome should table looking

             z      z.sub     z.ben    z       pie-chart (only if possible)  sheet 1      0        na        na    high sheet 2     ...       ...       ...   ... sheet 3     ...       ...       ...   ...  

i'm sorry if ordinary question!

hope able

thanks!

a better way read xls library readxl.

# remove "#" if don't have these libraries installed # install.packages("readxl")  # faster excel reader # install.packages("data.table")  # faster everything, in case rbindlist  library(readxl) library(data.table)  sheets = 1:5  # index numbers or names of sheets want read  readmysheets = function(sheets) {   df = read_excel(file="myexcel.xls", sheets) }  myfiles = lapply(sheets, readmysheets)  # apply indices/names on readmysheets function # have list: str(myfiles)  # bind separate sheets together = rbindlist(myfiles, fill = t) 

Comments