갑자기 해보고 싶어졌습니다..



    오늘 거래처에서 엑셀 데이터를 받았는데, 동일한 형태의 데이터를 18개의 Sheet에 나눠서 들어가 있었습니다.
    이제 이 데이터를 가지고 해야하는 것은…일단 모든 데이터를 합쳐서 아래와 같이 3개의 형태로 재분류하는 것 입니다.

    1. T store의 상품번호(AID)만 있는 것,
    2. olleh마켓의 상품번호(CID)만 있는 것,
    3. 둘 다 없는 것

    문제는 이번에는 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

    Posted by ShellingFord

티스토리 툴바