Data

step 1

setwd("C:/Users/LG/Desktop/R & Rmarkdown example")

library(readxl)

data1 <- read_excel(path="CHAIN.xlsx", sheet="Sheet1", col_names=TRUE) 
data2 <- read_excel(path="item.xlsx", sheet="unified VAT", col_names=TRUE)

library(kableExtra)

data1[,c(1:6)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
No 전표번호 구분 상세구분 문서구분 문서상세구분
202104-0000789 출고 정상출고 매입제품 일반
2 202104-0000790 출고 정상출고 매입제품 일반
491 202104-0000787 출고 정상출고 매입제품 일반
492 202104-0000788 출고 정상출고 매입제품 일반
537 202104-0000887 출고 정상출고 매입제품 일반
538 202104-0000888 출고 정상출고 매입제품 일반
data2[,c(1:6)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Lookup …2 Custid Dealer Name HospitalVATcode…5 HospitalVATcode…6
1043268101-13-12172 (주)디엠에스 1043268 (주)디엠에스 101-13-12172 1011312172
1043268542-87-00558 (주)디엠에스 1043268 (주)디엠에스 542-87-00558 5428700558
1027960 (주)미래메드 1027960 (주)미래메드 NA NA
1027858117-94-12540 (주)신화솔루션 1027858 (주)신화솔루션 117-94-12540 1179412540
1027858119-87-01129 (주)신화솔루션 1027858 (주)신화솔루션 119-87-01129 1198701129
1027858120-12-09216 (주)신화솔루션 1027858 (주)신화솔루션 120-12-09216 1201209216

step 2

index1 <- as.data.frame(unique(data2[,c(3:4)]))
dim(index1)
## [1] 176   2
index1[c(1:6),] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Custid Dealer Name
1043268 (주)디엠에스
1027960 (주)미래메드
1027858 (주)신화솔루션
1001024 기쁨병원
1028922 바로병원
1046476 봄메디칼

step 3

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
## 
##     group_rows
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
jdata <- left_join(data1, index1, by = c("대리점명" = "Dealer Name"))
dim(jdata)
## [1] 25824    37
jdata[,c(10,37)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
대리점명 Custid
(주)세원메디 1000307
(주)세원메디 1000307
(주)세원메디 1000307
(주)세원메디 1000307
(주)세원메디 1000307
(주)세원메디 1000307

step 4

njdata <- jdata %>% mutate(hypenv = gsub("(\\d{3})(\\d{2})(\\d{5})$", "\\1-\\2-\\3", jdata$사업자번호...12))
head(njdata)
## # A tibble: 6 x 38
##   No    전표번호       구분  상세구분 문서구분 문서상세구분 `출고/회수일자`    
##   <chr> <chr>          <chr> <chr>    <chr>    <chr>        <dttm>             
## 1 ▶    202104-0000789 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 2 2     202104-0000790 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 3 491   202104-0000787 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 4 492   202104-0000788 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 5 537   202104-0000887 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 6 538   202104-0000888 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## # ... with 31 more variables: 출고/회수등록일자 <dttm>, (주)녹십자 <chr>,
## #   대리점명 <chr>, 납품처명 <chr>, 사업자번호...12 <chr>,
## #   사업자번호...13 <chr>, 납품창고 <chr>, 배송단위 <chr>, 배송수량 <dbl>,
## #   총수량 <dbl>, 부서1 <chr>, 부서2 <lgl>, 제품코드 <chr>, 제품명 <chr>,
## #   LOT_NO <chr>, SERIAL_NO <chr>, 유효기간 <chr>, 배송 <chr>, 배송일자 <dttm>,
## #   지시번호 <chr>, 빌링처 <chr>, 빌링처명 <chr>, 주문번호 <chr>,
## #   공급처_환산수량 <dbl>, 공급처_배송단위 <chr>, 공급처_판매단가 <dbl>,
## #   공급처_판매단가(EA) <dbl>, Clip <chr>, ...36 <chr>, Custid <dbl>,
## #   hypenv <chr>
njdata[,c(37,38)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Custid hypenv
1000307 219-82-00046
1000307 219-82-00046
1000307 219-82-00046
1000307 219-82-00046
1000307 138-82-02667
1000307 138-82-02667
njdata <- njdata %>% mutate(newcodev = paste0(njdata$Custid, njdata$hypenv))
head(njdata)
## # A tibble: 6 x 39
##   No    전표번호       구분  상세구분 문서구분 문서상세구분 `출고/회수일자`    
##   <chr> <chr>          <chr> <chr>    <chr>    <chr>        <dttm>             
## 1 ▶    202104-0000789 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 2 2     202104-0000790 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 3 491   202104-0000787 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 4 492   202104-0000788 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 5 537   202104-0000887 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 6 538   202104-0000888 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## # ... with 32 more variables: 출고/회수등록일자 <dttm>, (주)녹십자 <chr>,
## #   대리점명 <chr>, 납품처명 <chr>, 사업자번호...12 <chr>,
## #   사업자번호...13 <chr>, 납품창고 <chr>, 배송단위 <chr>, 배송수량 <dbl>,
## #   총수량 <dbl>, 부서1 <chr>, 부서2 <lgl>, 제품코드 <chr>, 제품명 <chr>,
## #   LOT_NO <chr>, SERIAL_NO <chr>, 유효기간 <chr>, 배송 <chr>, 배송일자 <dttm>,
## #   지시번호 <chr>, 빌링처 <chr>, 빌링처명 <chr>, 주문번호 <chr>,
## #   공급처_환산수량 <dbl>, 공급처_배송단위 <chr>, 공급처_판매단가 <dbl>,
## #   공급처_판매단가(EA) <dbl>, Clip <chr>, ...36 <chr>, Custid <dbl>,
## #   hypenv <chr>, newcodev <chr>
njdata[,c(37:39)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Custid hypenv newcodev
1000307 219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046
1000307 138-82-02667 1000307138-82-02667
1000307 138-82-02667 1000307138-82-02667
njdata <- njdata %>% mutate(new = gsub("NA", "", as.character(njdata$newcodev)))
head(njdata)
## # A tibble: 6 x 40
##   No    전표번호       구분  상세구분 문서구분 문서상세구분 `출고/회수일자`    
##   <chr> <chr>          <chr> <chr>    <chr>    <chr>        <dttm>             
## 1 ▶    202104-0000789 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 2 2     202104-0000790 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 3 491   202104-0000787 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 4 492   202104-0000788 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 5 537   202104-0000887 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## 6 538   202104-0000888 출고  정상출고 매입제품 일반         2021-04-05 00:00:00
## # ... with 33 more variables: 출고/회수등록일자 <dttm>, (주)녹십자 <chr>,
## #   대리점명 <chr>, 납품처명 <chr>, 사업자번호...12 <chr>,
## #   사업자번호...13 <chr>, 납품창고 <chr>, 배송단위 <chr>, 배송수량 <dbl>,
## #   총수량 <dbl>, 부서1 <chr>, 부서2 <lgl>, 제품코드 <chr>, 제품명 <chr>,
## #   LOT_NO <chr>, SERIAL_NO <chr>, 유효기간 <chr>, 배송 <chr>, 배송일자 <dttm>,
## #   지시번호 <chr>, 빌링처 <chr>, 빌링처명 <chr>, 주문번호 <chr>,
## #   공급처_환산수량 <dbl>, 공급처_배송단위 <chr>, 공급처_판매단가 <dbl>,
## #   공급처_판매단가(EA) <dbl>, Clip <chr>, ...36 <chr>, Custid <dbl>,
## #   hypenv <chr>, newcodev <chr>, new <chr>
njdata[,c(37:40)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Custid hypenv newcodev new
1000307 219-82-00046 1000307219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046 1000307219-82-00046
1000307 219-82-00046 1000307219-82-00046 1000307219-82-00046
1000307 138-82-02667 1000307138-82-02667 1000307138-82-02667
1000307 138-82-02667 1000307138-82-02667 1000307138-82-02667
njdata <- njdata[c(40,10,11,1:9,12:39)]
head(njdata)
## # A tibble: 6 x 40
##   new     대리점명 납품처명  No    전표번호 구분  상세구분 문서구분 문서상세구분
##   <chr>   <chr>    <chr>     <chr> <chr>    <chr> <chr>    <chr>    <chr>       
## 1 100030~ (주)세~  서울아산~ ▶    202104-~ 출고  정상출고 매입제품 일반        
## 2 100030~ (주)세~  서울아산~ 2     202104-~ 출고  정상출고 매입제품 일반        
## 3 100030~ (주)세~  서울아산~ 491   202104-~ 출고  정상출고 매입제품 일반        
## 4 100030~ (주)세~  서울아산~ 492   202104-~ 출고  정상출고 매입제품 일반        
## 5 100030~ (주)세~  한림대학~ 537   202104-~ 출고  정상출고 매입제품 일반        
## 6 100030~ (주)세~  한림대학~ 538   202104-~ 출고  정상출고 매입제품 일반        
## # ... with 31 more variables: 출고/회수일자 <dttm>, 출고/회수등록일자 <dttm>,
## #   (주)녹십자 <chr>, 사업자번호...12 <chr>, 사업자번호...13 <chr>,
## #   납품창고 <chr>, 배송단위 <chr>, 배송수량 <dbl>, 총수량 <dbl>, 부서1 <chr>,
## #   부서2 <lgl>, 제품코드 <chr>, 제품명 <chr>, LOT_NO <chr>, SERIAL_NO <chr>,
## #   유효기간 <chr>, 배송 <chr>, 배송일자 <dttm>, 지시번호 <chr>, 빌링처 <chr>,
## #   빌링처명 <chr>, 주문번호 <chr>, 공급처_환산수량 <dbl>,
## #   공급처_배송단위 <chr>, 공급처_판매단가 <dbl>, 공급처_판매단가(EA) <dbl>,
## #   Clip <chr>, ...36 <chr>, Custid <dbl>, hypenv <chr>, newcodev <chr>
njdata[,c(1:6)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
new 대리점명 납품처명 No 전표번호 구분
1000307219-82-00046 (주)세원메디 서울아산병원 202104-0000789 출고
1000307219-82-00046 (주)세원메디 서울아산병원 2 202104-0000790 출고
1000307219-82-00046 (주)세원메디 서울아산병원 491 202104-0000787 출고
1000307219-82-00046 (주)세원메디 서울아산병원 492 202104-0000788 출고
1000307138-82-02667 (주)세원메디 한림대학교성심병원(평촌) 537 202104-0000887 출고
1000307138-82-02667 (주)세원메디 한림대학교성심병원(평촌) 538 202104-0000888 출고
  • 하이픈을 넣기 위해 [사업자 번호 12]변수를 사용함.
  • (\d{4})는 몇자리 숫자를 사용하는지 구분함. 4는 앞에서 4번째 숫자까지 한덩어리로 사용함.
  • \1\2\3는 3개의 덩어리로 구분된 숫자들을 어떻게 연결할지 결정함.
  • njdata[c(40,10,11,1:9,12:39)]는 변수 순서를 바꾸는 코드임.
  • 일련번호에 포함된 NA라는 글자를 공백으로 변환시킴.

step 5

index2 <- as.data.frame(unique(data2[,c(1,8:10)]))
dim(index2)
## [1] 5343    4
index2[c(1:6),] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
Lookup Unified VAT Unified Name Enduser-SAPID
1043268101-13-12172 1000000013 서울/경기B_DPS 9999999
1043268542-87-00558 1000000013 서울/경기B_DPS 9999999
1027960 1000000013 서울/경기B_DPS 9999999
1027858117-94-12540 1000000013 서울/경기B_DPS 9999999
1027858119-87-01129 1000000013 서울/경기B_DPS 9999999
1027858120-12-09216 1000000013 서울/경기B_DPS 9999999
fdata <- left_join(njdata, index2, by = c("new" = "Lookup"))
dim(fdata)
## [1] 25828    43
head(fdata)
## # A tibble: 6 x 43
##   new     대리점명 납품처명  No    전표번호 구분  상세구분 문서구분 문서상세구분
##   <chr>   <chr>    <chr>     <chr> <chr>    <chr> <chr>    <chr>    <chr>       
## 1 100030~ (주)세~  서울아산~ ▶    202104-~ 출고  정상출고 매입제품 일반        
## 2 100030~ (주)세~  서울아산~ 2     202104-~ 출고  정상출고 매입제품 일반        
## 3 100030~ (주)세~  서울아산~ 491   202104-~ 출고  정상출고 매입제품 일반        
## 4 100030~ (주)세~  서울아산~ 492   202104-~ 출고  정상출고 매입제품 일반        
## 5 100030~ (주)세~  한림대학~ 537   202104-~ 출고  정상출고 매입제품 일반        
## 6 100030~ (주)세~  한림대학~ 538   202104-~ 출고  정상출고 매입제품 일반        
## # ... with 34 more variables: 출고/회수일자 <dttm>, 출고/회수등록일자 <dttm>,
## #   (주)녹십자 <chr>, 사업자번호...12 <chr>, 사업자번호...13 <chr>,
## #   납품창고 <chr>, 배송단위 <chr>, 배송수량 <dbl>, 총수량 <dbl>, 부서1 <chr>,
## #   부서2 <lgl>, 제품코드 <chr>, 제품명 <chr>, LOT_NO <chr>, SERIAL_NO <chr>,
## #   유효기간 <chr>, 배송 <chr>, 배송일자 <dttm>, 지시번호 <chr>, 빌링처 <chr>,
## #   빌링처명 <chr>, 주문번호 <chr>, 공급처_환산수량 <dbl>,
## #   공급처_배송단위 <chr>, 공급처_판매단가 <dbl>, 공급처_판매단가(EA) <dbl>,
## #   Clip <chr>, ...36 <chr>, Custid <dbl>, hypenv <chr>, newcodev <chr>,
## #   Unified VAT <chr>, Unified Name <chr>, Enduser-SAPID <chr>
fdata <- fdata[,c(1:3,41:43,4:40)]
head(fdata[,c(1:6)])
## # A tibble: 6 x 6
##   new       대리점명  납품처명     `Unified VAT` `Unified Name`  `Enduser-SAPID`
##   <chr>     <chr>     <chr>        <chr>         <chr>           <chr>          
## 1 10003072~ (주)세원~ 서울아산병원 2198200046    서울아산병원    1000287        
## 2 10003072~ (주)세원~ 서울아산병원 2198200046    서울아산병원    1000287        
## 3 10003072~ (주)세원~ 서울아산병원 2198200046    서울아산병원    1000287        
## 4 10003072~ (주)세원~ 서울아산병원 2198200046    서울아산병원    1000287        
## 5 10003071~ (주)세원~ 한림대학교~  1388202667    한림대평촌성심~ 1000174        
## 6 10003071~ (주)세원~ 한림대학교~  1388202667    한림대평촌성심~ 1000174
#write.csv(fdata, "result.csv")

step 6

library(kableExtra)

fdata[,c(1:6)] %>% head() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
new 대리점명 납품처명 Unified VAT Unified Name Enduser-SAPID
1000307219-82-00046 (주)세원메디 서울아산병원 2198200046 서울아산병원 1000287
1000307219-82-00046 (주)세원메디 서울아산병원 2198200046 서울아산병원 1000287
1000307219-82-00046 (주)세원메디 서울아산병원 2198200046 서울아산병원 1000287
1000307219-82-00046 (주)세원메디 서울아산병원 2198200046 서울아산병원 1000287
1000307138-82-02667 (주)세원메디 한림대학교성심병원(평촌) 1388202667 한림대평촌성심병원 1000174
1000307138-82-02667 (주)세원메디 한림대학교성심병원(평촌) 1388202667 한림대평촌성심병원 1000174
fdata[,c(1:6)] %>% tail() %>% kbl %>% kable_styling(bootstrap_options = c("striped", "hover", "condensed"), font_size = 15, full_width = F)
new 대리점명 납품처명 Unified VAT Unified Name Enduser-SAPID
1041178408-82-08124 (주)녹십자 전남대학교병원 4088208124 전남대학교병원 1000215
1000561312-82-13705 (주)써지칼코리아 학교법인 동은학원 순천향대학교 부속천안 3128213705 천안순천향병원 1000729
1000561312-82-13705 (주)써지칼코리아 학교법인 동은학원 순천향대학교 부속천안 3128213705 천안순천향병원 1000729
1000561312-82-13705 (주)써지칼코리아 학교법인 동은학원 순천향대학교 부속천안 3128213705 천안순천향병원 1000729
1027858763-92-01537 (주)신화솔루션 건주병원 1000000013 서울/경기B_DPS 9999999
1027858763-92-01537 (주)신화솔루션 건주병원 1000000013 서울/경기B_DPS 9999999