갑자기 해보고 싶어졌습니다..
오늘 거래처에서 엑셀 데이터를 받았는데, 동일한 형태의 데이터를 18개의 Sheet에 나눠서 들어가 있었습니다.
이제 이 데이터를 가지고 해야하는 것은…일단 모든 데이터를 합쳐서 아래와 같이 3개의 형태로 재분류하는 것 입니다.
- T store의 상품번호(AID)만 있는 것,
- olleh마켓의 상품번호(CID)만 있는 것,
- 둘 다 없는 것
문제는 이번에는 18개 Sheet지만 앞으로 180개가 될 수 있습니다. 즉, 엑셀 Copy and Paste 노가다는 의미가 없다고 생각이 들었습니다.
그래서… 일단 R studio를 켜고 여기저기 도움을 받아서 아래와 같이 코드를 작성했습니다.
라이브러리와 xls 파일을 불러옴
library(XLConnect)
library(dplyr)
wb <- loadWorkbook("/Users/dusskapark/Desktop/CTN_Paid_Add_AID_20150622.xlsx") #파일주소는 알아서..
18개의 워크시트의 데이터를 불러와서 data에 넣습니다.
data <- Reduce(bind_rows, Map(function(i) { readWorksheet(wb, sheet = i) }, 1:18))
필요한 데이터만 따로 저장합니다.
data2 <- data[,c(4,7,8)]
#name 변경
names(data2) <- c("ollehCID", "AID", "CID")
# CID , T storeID 등 잘못된 데이터 값을 일괄 삭제
data3 <- data2 %>% filter(data2$ollehCID != 'CID')
#column 을 char 로 변경
as.character(data3$AID)
as.character(data3$CID)
dplyr 필터로 데이터를 구분해서 저장
library(dplyr)
Q1 <- data3 %>% filter(nchar(data3$AID) >= 10)
Q2 <- data3 %>% filter(nchar(data3$CID) >= 14)
Q3 <- data3 %>% filter(nchar(data3$AID) < 10 & nchar(data3$CID) < 14)
#저장한 파일을 CSV로 추출
write.csv(Q1, "/Users/dusskapark/Desktop/Q1.csv", row.names=TRUE)
write.csv(Q2, "/Users/dusskapark/Desktop/Q2.csv", row.names=TRUE)
write.csv(Q3, "/Users/dusskapark/Desktop/Q3.csv", row.names=TRUE)
Sent from My Haroopad
The Next Document processor based on Markdown - Download