비용 추계 자동화 부처별 데이터(국회 예산정책처 용역)

상훈·2022년 6월 12일
0

국회 예산 정책처 용역으로 진행한 비용 추계 자동화 부처별 데이터 전처리입니다.

###test 평균 

setwd('C:/Users/sjhty/OneDrive - incubate B2C technologies/바탕 화면/연습/딱따구리')

library(pacman)
p_load('reshape2','stringr','openxlsx','dplyr','tidyr','readxl')
name<-list.files(pattern='.xlsx')
name<-sapply(name, function(x) str_split(x, "\\.")[[1]][1])
for(i in 1: length(name)){
  print(i)
  text<-paste0(name[[i]],'.xlsx')
  data<-read.xlsx(text,3,colNames=FALSE)
  assign(name[i],data)
}



lis<-mget(name)

#########################데이터 처리 - 평균1###########################################

for(i in name){ #i<-3
  text<-paste0('평균',i)
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X10))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)
  
  pat<-"^[0-9].*."
  r<-b[,1][grep(pat,b[,1])]
  u<-b[grep(pat,b[,1]),]
  b[grep(pat,b[,1]),]<-u[order(r),]
  
  text<-paste0(i,'평균')
  assign(text,b)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X10))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)
  
  pat<-"^[0-9].*."
  r<-b[,1][grep(pat,b[,1])]
  u<-b[grep(pat,b[,1]),]
  b[grep(pat,b[,1]),]<-u[order(r),]
  
  text<-paste0(i,'평균')
  assign(text,b)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X11))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)
  
  pat<-"^[0-9].*."
  r<-b[,1][grep(pat,b[,1])]
  u<-b[grep(pat,b[,1]),]
  b[grep(pat,b[,1]),]<-u[order(r),]
  
  text<-paste0(i,'평균')
  assign(text,b)}
}
name1<-paste0(name,'평균')
lis_mean<-mget(name1)


####################### 데이터 처리 - 인원 합계1##########################

for(i in 1: length( name)){ #i<-1
  text<-paste0('인원합계_',name[i])
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X10))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  
  text<-paste0(name[i],'인원')
  assign(text,dd)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X10))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'인원')
  assign(text,dd)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X11))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'인원')
  assign(text,dd)}
}
name2<-paste0(name,'인원')
lis_people<-mget(name2)
######################## 데이터 처리 -총합1 ##########################################

for(i in 1: length(name)){ #i<-3
  text<-paste0('급여총합_',name[i])
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합')
  assign(text,dd)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합')
  assign(text,dd)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('상당','',t1)
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('^14등급','차관',t1)
  t1<-gsub('^12등급|^13등급','고위공무원 가',t1)
  t1<-gsub('^10등급|^11등급','고위공무원 나',t1)
  t1<-gsub('^9등급','3급',t1)
  t1<-gsub('^6등급|7등급|8등급','4급',t1)
  t1<-gsub('^5등급','5급',t1)
  t1<-gsub('^4등급','6급',t1)
  t1<-gsub('^3등급','7급',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합')
  assign(text,dd)}
}
name3<-paste0(name,'총합')
lis_pay<-mget(name3)


############################### 데이터 처리 - 평균 총합 구하기
for(i in 1:length(name)){
  pay<-lis_pay[[i]]
  people<-lis_people[[i]]
  
  x<-pay[nrow(pay),-c(1,length(pay))]/people[nrow(people),-c(1,length(pay))]
  직급='총합계'
  t<-cbind(직급,x)
  lis_mean[[i]]<-rbind(lis_mean[[i]],t)
  
  총합계<-pay[,length(pay)]/people[,2]
  lis_mean[[i]]<-cbind(lis_mean[[i]],총합계)
  lis_mean[[i]][lis_mean[[i]]==Inf]<-0
  assign(name1[[i]],lis_mean[[i]])
  
  
}
for(i in 1: length(name)){
  a<-rbind(lis_pay[[i]],colnames(lis_pay[[i]]),lis_people[[i]],colnames(lis_pay[[i]]),lis_mean[[i]])
  text<-paste0(name[i],'통합')
  assign(text,a)
}
text<-paste0(name,'통합')
lis_all<-mget(text)

### ############################데이터 처리 -완성본 코딩
for(i in 1:length(name)){ #i<-32
  print(name[i])
  
  data<-lis[[i]]
  
  if(length(data)==12){data1<-data[,c(1,3,2)]
  
  
  ### 단가 추가
  first<-data1[,2]
  first<- sapply(first, function(x) str_split(x, '\\*')[[1]][1])
  first<-gsub('원|\\=','',first)
  data2<-cbind(data1,first)
  
  ### 1.에서 . 분리   부분 
  second<-data[,4]
  second<- sapply(second, function(x) str_split(x, '\\.')[[1]][1])
  data3<-cbind(data2,as.numeric(second))
  
  ### 수당1
  third<-data[,4]
  third<- sapply(third, function(x) str_split(x, '\\.')[[1]][2])         
  third<- sapply(third, function(x) str_split(x, '\\(')[[1]][1])         
  data4<-cbind(data3,third)
  
  ###  수당_괄호
  fourth<-data[,4]
  fourth<- sapply(fourth, function(x) str_split(x, '\\.')[[1]][2])         
  fourth<- sapply(fourth, function(x) str_split(x, '\\(')[[1]][2])
  fourth<-gsub('\\)','',fourth)
  data5<-cbind(data4,fourth)
  
  ### 가.
  fifth<-NA
  data6<-cbind(data5,fifth)
  
  ### 수당2
  sixth<-data[,5]
  data7<-cbind(data6,sixth)
  
  ### 수당2_괄호
  seventh<-data[,5]
  seventh<- sapply(seventh, function(x) str_split(x, '\\(')[[1]][2]) 
  seventh<- gsub('\\)','',seventh)
  data8<-cbind(data7,seventh)
  
  ### 1)
  eightth<-NA
  data9<-cbind(data8,as.numeric(eightth))
  
  ### 직-유형
  nineth<-data[,6]
  data10<-cbind(data9,nineth)
  
  ### 가)
  tenth<-NA
  data11<-cbind(data10,tenth)
  
  ### 연봉제
  eleventh<-data[,7]
  data12<-cbind(data11,eleventh)
  
  ### 1>
  twelfth<-NA
  data13<-cbind(data12,as.numeric(twelfth))
  
  ### 직급
  thirteenth<- data[,8]
  thirteenth<- sapply(thirteenth, function(x) str_split(x, '\\(')[[1]][1]) 
  data14<-cbind(data13,thirteenth)
  
  ### 
  
  data15<-cbind(data14,data[,10])
  colnames(data15)<-c('연번','산식','금액','단가','1.','수당','수당_괄호','가.','수당2','수당2_괄호','1)','직-유형','가)','연봉제','1>','직급','명')
  text<-paste0(name[i],'완성본')
  assign(text,data15)
  }
  else{
    
    ### 금액까지 가져오기
    data1<-data[,c(1,3,2)]
    
    
    ### 단가 추가
    first<-data1[,2]
    first<- sapply(first, function(x) str_split(x, '\\*')[[1]][1])
    first<-gsub('원|\\=','',first)
    data2<-cbind(data1,first)
    
    ### 1.에서 . 분리   부분 
    second<-data[,4]
    second<- sapply(second, function(x) str_split(x, '\\.')[[1]][1])
    data3<-cbind(data2,as.numeric(second))
    
    ### 수당1
    third<-data[,4]
    third<- sapply(third, function(x) str_split(x, '\\.')[[1]][2])         
    third<- sapply(third, function(x) str_split(x, '\\(')[[1]][1])         
    data4<-cbind(data3,third)
    
    ###  수당_괄호
    fourth<-data[,4]
    fourth<- sapply(fourth, function(x) str_split(x, '\\.')[[1]][2])         
    fourth<- sapply(fourth, function(x) str_split(x, '\\(')[[1]][2])
    fourth<-gsub('\\)','',fourth)
    data5<-cbind(data4,fourth)
    
    ### 가.
    fifth<-data[,5]
    fifth<- sapply(fifth, function(x) str_split(x, '\\.')[[1]][1])
    data6<-cbind(data5,fifth)
    
    ### 수당2
    sixth<-data[,5]
    sixth<- sapply(sixth, function(x) str_split(x, '\\.')[[1]][2])
    sixth<- sapply(sixth, function(x) str_split(x, '\\(')[[1]][1]) 
    data7<-cbind(data6,sixth)
    
    ### 수당2_괄호
    seventh<-data[,5]
    seventh<- sapply(seventh, function(x) str_split(x, '\\.')[[1]][2])
    seventh<- sapply(seventh, function(x) str_split(x, '\\(')[[1]][2]) 
    seventh<- gsub('\\)','',seventh)
    data8<-cbind(data7,seventh)
    
    ### 1)
    eightth<-data[,6]
    eightth<- sapply(eightth, function(x) str_split(x, '\\)')[[1]][1]) 
    data9<-cbind(data8,as.numeric(eightth))
    
    ### 직-유형
    nineth<-data[,6]
    nineth<- sapply(nineth, function(x) str_split(x, '\\)')[[1]][2]) 
    data10<-cbind(data9,nineth)
    
    ### 가)
    tenth<-data[,7]
    tenth<- sapply(tenth, function(x) str_split(x, '\\)')[[1]][1]) 
    data11<-cbind(data10,tenth)
    
    ### 연봉제
    eleventh<-data[,7]
    eleventh<- sapply(eleventh, function(x) str_split(x, '\\)')[[1]][2]) 
    data12<-cbind(data11,eleventh)
    
    ### 1>
    twelfth<- data[,8]
    twelfth<- sapply(twelfth, function(x) str_split(x, '\\>')[[1]][1]) 
    data13<-cbind(data12,as.numeric(twelfth))
    
    ### 직급
    thirteenth<- data[,8]
    thirteenth<- sapply(thirteenth, function(x) str_split(x, '\\>')[[1]][2]) 
    thirteenth<- sapply(thirteenth, function(x) str_split(x, '\\(')[[1]][1]) 
    data14<-cbind(data13,thirteenth)
    
    ### 명
    
    if(length(data)==16){
      data15<-cbind(data14,data[,11])
    }
    else{data15<-cbind(data14,data[,10])} 
    
    
    colnames(data15)<-c('연번','산식','금액','단가','1.','수당','수당_괄호','가.','수당2','수당2_괄호','1)','직-유형','가)','연봉제','1>','직급','명')
    text<-paste0(name[i],'완성본')
    assign(text,data15)}
  
  
  
}

text<-paste0(name,'완성본')

lis_end<-mget(text)
##########################################################통계표 2번#########################


#########################데이터 처리2 - 평균###########################################

for(i in name){ #i<-3
  text<-paste0('평균',i)
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X10))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)
  
  
  text<-paste0(i,'평균2')
  assign(text,b)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X10))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)
  
  
  text<-paste0(i,'평균2')
  assign(text,b)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2),people=sum(X11))
  d<-d %>% mutate(total=pay/people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  b<-arrange(dd,-봉급)

  
  text<-paste0(i,'평균2')
  assign(text,b)}
}
name11<-paste0(name,'평균2')
lis_mean2<-mget(name11)


####################### 데이터 처리2 - 인원2 합계##########################

for(i in 1: length( name)){ #i<-1
  text<-paste0('인원2합계_',name[i])
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X10))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  
  text<-paste0(name[i],'인원2')
  assign(text,dd)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X10))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'인원2')
  assign(text,dd)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(people=sum(X11))
  d<-d %>% mutate(total=people)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'인원2')
  assign(text,dd)}
}
name22<-paste0(name,'인원2')
lis_people2<-mget(name22)
######################## 데이터 처리2 -총합2 ##########################################

for(i in 1: length(name)){ #i<-3
  text<-paste0('급여총합2_',name[i])
  print(text)
  
  if(length(lis[[i]])==15)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합2')
  assign(text,dd)}
  else if(length(lis[[i]])==12)
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X10')]
  a$X10[is.na(a$X10)==TRUE]<-0
  a<-filter(a, !X10==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  t1<-sapply(a[,3], function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합2')
  assign(text,dd)}
  
  else
  {data<-lis[[i]]
  a<-data[-1,c('X2','X4','X8','X11')]
  a$X11[is.na(a$X11)==TRUE]<-0
  a<-filter(a, !X11==0)
  
  ### 급여 이름 정리 
  pat<-'(?<=\\.).*?(?=\\()'
  t<-sapply(a[,2], function(x) str_extract(x,pat))
  a[,2]<-str_trim(t)
  a[is.na(a)==TRUE]<-0
  
  ### 직급 이름 정리
  pat2<-'(?<=\\>).*'
  t<-sapply(a[,3], function(x) str_extract(x,pat2))
  t1<-sapply(t, function(x) str_split(x,'\\(')[[1]][1])
  t1<-gsub('^차관.*.','차관',t1)
  t1<-gsub('^장관.*.','장관',t1)
  t1<-gsub('^채용후보자.*.','채용후보자',t1)
  t1<-gsub('^ 채용후보자.*.','채용후보자',t1)
  t1<-gsub('8 급','8급',t1)
  t1<-gsub('연봉제5급','5급',t1)
  t1<-gsub('전문경력관  나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관가군','전문경력관 가군',t1)
  t1<-gsub('전문경력관나군','전문경력관 나군',t1)
  t1<-gsub('전문경력관다군','전문경력관 다군',t1)
  t1<-gsub('전문임기제 나간','전문경력관 나군',t1)
  a[,3]<-str_trim(t1)
  
  a[is.na(a)==TRUE]<-0
  d<-a %>% group_by(X4,X8)%>% summarize(pay=sum(X2))
  d<-d %>% mutate(total=pay)
  dd<-dcast(d,X8~X4,sum)
  
  a<-which(colnames(dd)=='봉급')
  dd<-cbind(dd[,c(1,a)],dd[,-c(1,a)])
  colnames(dd)[1]<-'직급'
  
  dd[dd=='Inf']<-0
  
  cha<-lis_mean2[[i]][,1]
  a<-lapply(cha, function(x) x==dd[,1])
  num<-do.call(rbind,lapply(a,function(x) which(x==TRUE)))
  dd<-dd[num,]
  t<-c(1,apply(dd[,-1],2,sum))
  dd<-rbind(dd,t)
  y<-apply(dd[,-1],1,sum)
  dd<-cbind(dd,y)
  
  dd[nrow(dd),1]<-'총합계'
  colnames(dd)[[length(dd)]]<-'총합계'
  
  text<-paste0(name[i],'총합2')
  assign(text,dd)}
}
name33<-paste0(name,'총합2')
lis_pay2<-mget(name33)


############################### 데이터 처리2 - 평균 총합2 구하기
for(i in 1:length(name)){
  pay<-lis_pay2[[i]]
  people<-lis_people2[[i]]
  
  x<-pay[nrow(pay),-c(1,length(pay))]/people[nrow(people),-c(1,length(pay))]
  직급='총합계'
  t<-cbind(직급,x)
  lis_mean2[[i]]<-rbind(lis_mean2[[i]],t)
  
  총합계<-pay[,length(pay)]/people[,2]
  lis_mean2[[i]]<-cbind(lis_mean2[[i]],총합계)
  lis_mean2[[i]][lis_mean2[[i]]==Inf]<-0
  assign(name11[[i]],lis_mean2[[i]])
  
  
}
for(i in 1: length(name)){
  a<-rbind(lis_pay2[[i]],colnames(lis_pay2[[i]]),lis_people2[[i]],colnames(lis_pay2[[i]]),lis_mean2[[i]])
  text<-paste0(name[i],'통합2')
  assign(text,a)
}
text<-paste0(name,'통합2')
lis_all2<-mget(text)

################################################### 저장

tt<-list.files()

for(i in 1:length(name)){
  setwd('C:/Users/sjhty/OneDrive - incubate B2C technologies/바탕 화면/연습/딱따구리')

  print(name[i])
  
  data1<-read_xlsx(tt[[i]],1)
  data2<-read_xlsx(tt[[i]],2)
  data3<-read_xlsx(tt[[i]],3)
  
  setwd('C:/Users/sjhty/OneDrive - incubate B2C technologies/바탕 화면/몰라')
  
  a<-createWorkbook()
  addWorksheet(a,'원본')
  addWorksheet(a,'추출본')
  addWorksheet(a,'정리본')
  addWorksheet(a,'완결본')
  addWorksheet(a,'통계표1')
  addWorksheet(a,'통계표2')
  writeData(a,'원본',data1,rowName=FALSE,withFilter=FALSE, )
  writeDataTable(a,'추출본',data2)
  writeDataTable(a,'정리본',data3)
  writeDataTable(a,'완결본',lis_end[[i]])
  writeData(a,'통계표1',lis_all[[i]],rowNames=FALSE, borders="all", borderColour = "black",borderStyle='thin')
  writeData(a,'통계표2',lis_all2[[i]],rowNames=FALSE, borders="all", borderColour = "black",borderStyle='thin')
  
  text<-paste0(name[[i]],'.xlsx')
  openxlsx::saveWorkbook(a,text,overwrite=TRUE)
  
}

t<-data.frame()
for(i in 1:length(name)){
  a<-lis_all[[i]]
  부처명<-name[i]
  b<-cbind(부처명,a)
  t<-bind_rows(t,b)

}

write.xlsx(t,'모음1.xlsx')

t<-data.frame()
for(i in 1:length(name)){
  a<-lis_all2[[i]]
  부처명<-name[i]
  b<-cbind(부처명,a)
  t<-bind_rows(t,b)
  
}
write.xlsx(t,'모음2.xlsx')
getwd()

profile
문송 개발자

0개의 댓글