본문 바로가기
Prop : 부동산/업데이트 일지

[R] 두 경로(폴더/디렉토리)에 파일들이 있을 때, 용량을 나란히 비교해서 보는 사용자 함수

by 프롭테크 2025. 9. 11.
반응형
두 경로(폴더/디렉토리)에 동일한 이름과 동일한 개수의 파일들이 있을 때, 각 파일의 용량을 나란히 비교해서 보는 사용자 함수를 만들어보자.

 

<목적>

API로 데이터를 받아서 파일 형태로 저장하면서 API 결과의 누락이 발생하는 경우가 있음.
이때 누락된 내용을 빼고 나머지 리턴값으로 파일을 무사히(?) 완성하게 되는데,
내용을 직접 확인하지 않고도 어떤 파일에서 문제가 발생했는지 한눈에 알아보기 위함.

 

<사용자 함수 코드 - 완성본>

compare_file_sizes <- function(path1, path2) {
  
  # 파일 크기 단위 변환 함수
  format_size <- function(bytes) {
    abs_bytes <- abs(bytes)
    sign <- ifelse(bytes < 0, "-", "")
    
    if (abs_bytes < 1024) {
      return(paste0(sign, round(abs_bytes, 1), "B"))
    } else if (abs_bytes < 1024^2) {
      return(paste0(sign, round(abs_bytes/1024, 1), "K"))
    } else if (abs_bytes < 1024^3) {
      return(paste0(sign, round(abs_bytes/1024^2, 1), "M"))
    } else {
      return(paste0(sign, round(abs_bytes/1024^3, 1), "G"))
    }
  }
  
  # 경로명을 간단하게 변환 (마지막 디렉토리명 사용)
  path1_name <- basename(path1)
  path2_name <- basename(path2)
  
  # 파일 목록 및 크기 가져오기
  files1 <- file.info(list.files(path1, full.names = TRUE))
  files2 <- file.info(list.files(path2, full.names = TRUE))
  
  # 파일명만 추출
  files1$filename <- basename(rownames(files1))
  files2$filename <- basename(rownames(files2))
  
  # 병합
  result <- merge(files1[c("filename", "size")], 
                  files2[c("filename", "size")], 
                  by = "filename", 
                  suffixes = c(paste0("_", path1_name), paste0("_", path2_name)))
  
  # 변화량과 비율 계산
  size1_col <- paste0("size_", path1_name)
  size2_col <- paste0("size_", path2_name)
  
  result$change <- result[[size2_col]] - result[[size1_col]]
  result$change_pct <- round((result$change / result[[size1_col]]) * 100, 1)
  
  # 크기 포맷팅
  result$size1_fmt <- sapply(result[[size1_col]], format_size)
  result$size2_fmt <- sapply(result[[size2_col]], format_size)
  result$change_fmt <- sapply(result$change, format_size)
  
  # 최종 결과 (동적 컬럼명)
  final <- data.frame(
    filename = result$filename,
    stringsAsFactors = FALSE
  )
  
  final[[path1_name]] <- result$size1_fmt
  final[[path2_name]] <- result$size2_fmt
  final[["change"]] <- paste0(result$change_fmt, " (", ifelse(result$change_pct > 0, "+", ""), result$change_pct, "%)")
  
  return(final[order(final$filename), ])
}

# 사용법
# compare_file_sizes("output/20250909", "output/20250910")

# 사용법
# compare_file_sizes()

 

<실 사용 예시>

- 완성본 이전의, path를 하드코딩한 함수 사용

  • "아파트매매 실거래 상세 자료_202506.xlsx" 파일에서 전일 대비 마이너스 용량
> compare_file_sizes()
                                   filename size_09 size_10          change
1    단독다가구 매매 실거래자료_202507.xlsx  292.3K  292.3K         5B (0%)
2    단독다가구 매매 실거래자료_202508.xlsx  225.2K  232.7K    7.5K (+3.3%)
3    단독다가구 매매 실거래자료_202509.xlsx   35.9K   42.8K   6.9K (+19.1%)
4  단독다가구 전월세 실거래자료_202507.xlsx    2.5M    2.5M    7.2K (+0.3%)
5  단독다가구 전월세 실거래자료_202508.xlsx    1.9M    1.9M   43.8K (+2.2%)
6  단독다가구 전월세 실거래자료_202509.xlsx    213K  264.4K  51.4K (+24.1%)
7   아파트 분양권전매 신고 자료_202507.xlsx  213.7K    214K    309B (+0.1%)
8   아파트 분양권전매 신고 자료_202508.xlsx  179.9K  183.4K      3.6K (+2%)
9   아파트 분양권전매 신고 자료_202509.xlsx     35K   42.9K   7.9K (+22.5%)
10           아파트 전월세 자료_202507.xlsx    7.1M    7.2M   80.4K (+1.1%)
11           아파트 전월세 자료_202508.xlsx    5.5M    5.6M   80.3K (+1.4%)
12           아파트 전월세 자료_202509.xlsx  860.7K      1M 200.6K (+23.3%)
13  아파트매매 실거래 상세 자료_202504.xlsx    6.8M    6.8M       457B (0%)
14  아파트매매 실거래 상세 자료_202505.xlsx    7.5M    7.5M       238B (0%)
15  아파트매매 실거래 상세 자료_202506.xlsx    8.8M    8.2M  -643641B (-7%)
16  아파트매매 실거래 상세 자료_202507.xlsx    5.6M    5.6M       2.5K (0%)
17  아파트매매 실거래 상세 자료_202508.xlsx    4.7M    4.8M  106.4K (+2.2%)
18  아파트매매 실거래 상세 자료_202509.xlsx  763.5K    950K 186.5K (+24.4%)
19        아파트매매 실거래자료_202504.xlsx    4.1M    4.1M       355B (0%)
20        아파트매매 실거래자료_202505.xlsx    4.5M    4.5M       369B (0%)
21        아파트매매 실거래자료_202506.xlsx    5.3M    5.3M       2.4K (0%)
22        아파트매매 실거래자료_202507.xlsx    3.4M    3.4M       1.6K (0%)
23        아파트매매 실거래자료_202508.xlsx    2.9M    2.9M   64.9K (+2.2%)
24        아파트매매 실거래자료_202509.xlsx  465.5K    580K 114.5K (+24.6%)
25   연립다세대 매매 실거래자료_202507.xlsx  711.5K  711.9K    423B (+0.1%)
26   연립다세대 매매 실거래자료_202508.xlsx  580.3K  594.7K   14.4K (+2.5%)
27   연립다세대 매매 실거래자료_202509.xlsx   76.2K     97K  20.9K (+27.4%)
28 연립다세대 전월세 실거래자료_202507.xlsx    1.7M    1.7M -12686B (-0.7%)
29 연립다세대 전월세 실거래자료_202508.xlsx    1.3M    1.4M   26.1K (+1.9%)
30 연립다세대 전월세 실거래자료_202509.xlsx  193.7K  238.9K  45.2K (+23.3%)
31     오피스텔 매매 실거래자료_202507.xlsx  282.8K    283K    165B (+0.1%)
32     오피스텔 매매 실거래자료_202508.xlsx  215.3K  220.9K    5.5K (+2.6%)
33     오피스텔 매매 실거래자료_202509.xlsx   35.9K   38.9K      3K (+8.3%)
34   오피스텔 전월세 실거래자료_202507.xlsx    1.9M    1.9M    4.8K (+0.2%)
35   오피스텔 전월세 실거래자료_202508.xlsx    1.4M    1.5M   26.2K (+1.8%)
36   오피스텔 전월세 실거래자료_202509.xlsx  195.3K  232.8K  37.5K (+19.2%)

(추가 API 호출)

-전략 -
[1] "52730"
No Data : 전북특별자치도 장수군52740 (202506)
[1] "52750"
[1] "52770"
[1] "52790"
[1] "52800"
[1] "Done: output/APTprice/20250910/아파트매매 실거래 상세 자료_202506.xlsx has been saved."
OK : 아파트매매 실거래 상세 자료_202506
[1] 10

 

> compare_file_sizes()
                                   filename size_09 size_10          change
1    단독다가구 매매 실거래자료_202507.xlsx  292.3K  292.3K         5B (0%)
2    단독다가구 매매 실거래자료_202508.xlsx  225.2K  232.7K    7.5K (+3.3%)
3    단독다가구 매매 실거래자료_202509.xlsx   35.9K   42.8K   6.9K (+19.1%)
4  단독다가구 전월세 실거래자료_202507.xlsx    2.5M    2.5M    7.2K (+0.3%)
5  단독다가구 전월세 실거래자료_202508.xlsx    1.9M    1.9M   43.8K (+2.2%)
6  단독다가구 전월세 실거래자료_202509.xlsx    213K  264.4K  51.4K (+24.1%)
7   아파트 분양권전매 신고 자료_202507.xlsx  213.7K    214K    309B (+0.1%)
8   아파트 분양권전매 신고 자료_202508.xlsx  179.9K  183.4K      3.6K (+2%)
9   아파트 분양권전매 신고 자료_202509.xlsx     35K   42.9K   7.9K (+22.5%)
10           아파트 전월세 자료_202507.xlsx    7.1M    7.2M   80.4K (+1.1%)
11           아파트 전월세 자료_202508.xlsx    5.5M    5.6M   80.3K (+1.4%)
12           아파트 전월세 자료_202509.xlsx  860.7K      1M 200.6K (+23.3%)
13  아파트매매 실거래 상세 자료_202504.xlsx    6.8M    6.8M       457B (0%)
14  아파트매매 실거래 상세 자료_202505.xlsx    7.5M    7.5M       238B (0%)
15  아파트매매 실거래 상세 자료_202506.xlsx    8.8M    8.8M       3.8K (0%)
16  아파트매매 실거래 상세 자료_202507.xlsx    5.6M    5.6M       2.5K (0%)
17  아파트매매 실거래 상세 자료_202508.xlsx    4.7M    4.8M  106.4K (+2.2%)
18  아파트매매 실거래 상세 자료_202509.xlsx  763.5K    950K 186.5K (+24.4%)
19        아파트매매 실거래자료_202504.xlsx    4.1M    4.1M       355B (0%)
20        아파트매매 실거래자료_202505.xlsx    4.5M    4.5M       369B (0%)
21        아파트매매 실거래자료_202506.xlsx    5.3M    5.3M       2.4K (0%)
22        아파트매매 실거래자료_202507.xlsx    3.4M    3.4M       1.6K (0%)
23        아파트매매 실거래자료_202508.xlsx    2.9M    2.9M   64.9K (+2.2%)
24        아파트매매 실거래자료_202509.xlsx  465.5K    580K 114.5K (+24.6%)
25   연립다세대 매매 실거래자료_202507.xlsx  711.5K  711.9K    423B (+0.1%)
26   연립다세대 매매 실거래자료_202508.xlsx  580.3K  594.7K   14.4K (+2.5%)
27   연립다세대 매매 실거래자료_202509.xlsx   76.2K     97K  20.9K (+27.4%)
28 연립다세대 전월세 실거래자료_202507.xlsx    1.7M    1.7M -12686B (-0.7%)
29 연립다세대 전월세 실거래자료_202508.xlsx    1.3M    1.4M   26.1K (+1.9%)
30 연립다세대 전월세 실거래자료_202509.xlsx  193.7K  238.9K  45.2K (+23.3%)
31     오피스텔 매매 실거래자료_202507.xlsx  282.8K    283K    165B (+0.1%)
32     오피스텔 매매 실거래자료_202508.xlsx  215.3K  220.9K    5.5K (+2.6%)
33     오피스텔 매매 실거래자료_202509.xlsx   35.9K   38.9K      3K (+8.3%)
34   오피스텔 전월세 실거래자료_202507.xlsx    1.9M    1.9M    4.8K (+0.2%)
35   오피스텔 전월세 실거래자료_202508.xlsx    1.4M    1.5M   26.2K (+1.8%)
36   오피스텔 전월세 실거래자료_202509.xlsx  195.3K  232.8K  37.5K (+19.2%)
[1] "52210"
[1] "52710"
No Data : 전북특별자치도 진안군52720 (202507)
No Data : 전북특별자치도 무주군52730 (202507)
No Data : 전북특별자치도 장수군52740 (202507)
No Data : 전북특별자치도 임실군52750 (202507)
[1] "52770"
[1] "52790"
[1] "52800"
[1] "Done: output/APTprice/20250910/연립다세대 전월세 실거래자료_202507.xlsx has been saved."
OK : 연립다세대 전월세 실거래자료_202507
[1] 35

 

<최종 결과>

> compare_file_sizes()
                                   filename size_09 size_10          change
1    단독다가구 매매 실거래자료_202507.xlsx  292.3K  292.3K         5B (0%)
2    단독다가구 매매 실거래자료_202508.xlsx  225.2K  232.7K    7.5K (+3.3%)
3    단독다가구 매매 실거래자료_202509.xlsx   35.9K   42.8K   6.9K (+19.1%)
4  단독다가구 전월세 실거래자료_202507.xlsx    2.5M    2.5M    7.2K (+0.3%)
5  단독다가구 전월세 실거래자료_202508.xlsx    1.9M    1.9M   43.8K (+2.2%)
6  단독다가구 전월세 실거래자료_202509.xlsx    213K  264.4K  51.4K (+24.1%)
7   아파트 분양권전매 신고 자료_202507.xlsx  213.7K    214K    309B (+0.1%)
8   아파트 분양권전매 신고 자료_202508.xlsx  179.9K  183.4K      3.6K (+2%)
9   아파트 분양권전매 신고 자료_202509.xlsx     35K   42.9K   7.9K (+22.5%)
10           아파트 전월세 자료_202507.xlsx    7.1M    7.2M   80.4K (+1.1%)
11           아파트 전월세 자료_202508.xlsx    5.5M    5.6M   80.3K (+1.4%)
12           아파트 전월세 자료_202509.xlsx  860.7K      1M 200.6K (+23.3%)
13  아파트매매 실거래 상세 자료_202504.xlsx    6.8M    6.8M       457B (0%)
14  아파트매매 실거래 상세 자료_202505.xlsx    7.5M    7.5M       238B (0%)
15  아파트매매 실거래 상세 자료_202506.xlsx    8.8M    8.8M       3.8K (0%)
16  아파트매매 실거래 상세 자료_202507.xlsx    5.6M    5.6M       2.5K (0%)
17  아파트매매 실거래 상세 자료_202508.xlsx    4.7M    4.8M  106.4K (+2.2%)
18  아파트매매 실거래 상세 자료_202509.xlsx  763.5K    950K 186.5K (+24.4%)
19        아파트매매 실거래자료_202504.xlsx    4.1M    4.1M       355B (0%)
20        아파트매매 실거래자료_202505.xlsx    4.5M    4.5M       369B (0%)
21        아파트매매 실거래자료_202506.xlsx    5.3M    5.3M       2.4K (0%)
22        아파트매매 실거래자료_202507.xlsx    3.4M    3.4M       1.6K (0%)
23        아파트매매 실거래자료_202508.xlsx    2.9M    2.9M   64.9K (+2.2%)
24        아파트매매 실거래자료_202509.xlsx  465.5K    580K 114.5K (+24.6%)
25   연립다세대 매매 실거래자료_202507.xlsx  711.5K  711.9K    423B (+0.1%)
26   연립다세대 매매 실거래자료_202508.xlsx  580.3K  594.7K   14.4K (+2.5%)
27   연립다세대 매매 실거래자료_202509.xlsx   76.2K     97K  20.9K (+27.4%)
28 연립다세대 전월세 실거래자료_202507.xlsx    1.7M    1.7M    3.6K (+0.2%)
29 연립다세대 전월세 실거래자료_202508.xlsx    1.3M    1.4M   26.1K (+1.9%)
30 연립다세대 전월세 실거래자료_202509.xlsx  193.7K  238.9K  45.2K (+23.3%)
31     오피스텔 매매 실거래자료_202507.xlsx  282.8K    283K    165B (+0.1%)
32     오피스텔 매매 실거래자료_202508.xlsx  215.3K  220.9K    5.5K (+2.6%)
33     오피스텔 매매 실거래자료_202509.xlsx   35.9K   38.9K      3K (+8.3%)
34   오피스텔 전월세 실거래자료_202507.xlsx    1.9M    1.9M    4.8K (+0.2%)
35   오피스텔 전월세 실거래자료_202508.xlsx    1.4M    1.5M   26.2K (+1.8%)
36   오피스텔 전월세 실거래자료_202509.xlsx  195.3K  232.8K  37.5K (+19.2%)

 

 

반응형

댓글