앞에서는 웹 url에서 데이터를 받아서 파일을 업로드 한 다음 다시 파일을 import하는 과정이 있었다. 엑셀이나 CSV 화일을 직접 메일이나, 복사 하였을 때, 하는 것이고, 블로그에 소스를 게시 할 때는 readxl이나, rio 패키지에서 웹 url링크를 걸어 직접 데이터를 가져오는 것이 좋을 것 같다.
대부분의 블로그의 R에서는 R 패키지에 내장되어 있는 데이터를 주로 사용하지만, 우리는 실제 존재 하거나, 사용하였던 데이터 패턴을 사용하겠다.
아래 2021년 SW기술자 임금의 URL이 있다.
https://drive.google.com/u/0/uc?id=1qdr8A90jGnkST-FYnyaSTNQyB7VHdLhs&export=download
이것을 다른 방법으로 받을 수 있다. 바로 readxl 이나, rio 패키지에 패스를 거는 쪽에서 url을 걸면 된다. 앞으로 데이터를 가지고 올 때, url을 가져오는 function( - 명령어를 반복해서 사용할 때는 함수를 쓰는 것이 좋음)을 가져와서 지속적으로 활용 하겠다.
1. readxl
readxl은 URL을 통신 할 수 있는 패키지인 httr을 활용 하여, 임시 데이터를 받은 다음 데이터를 패스 걸어, 데이터 프레임으로 import 하는 것이다. 이것은 임시 파일이 많이 생긴다는 단점이 존재한다. 결국 데이터를 받아서 사람이 정리해서 올리는 것이 좋은 건지 아니면, 그냥 임시적으로 받아 그대로 처리하는 것이 좋은 것인지는 사용하는 사람이 잘 판단해서 실행 하여야 한다.
# 라이브러리 블러오기
library(readxl)
library(httr)
# 파일을 불러오는 path를 url 변수로 정의
url = "https://drive.google.com/u/0/uc?id=1qdr8A90jGnkST-FYnyaSTNQyB7VHdLhs&export=download"
GET(url, write_disk(tf <- tempfile(fileext = ".xlsx")))
## Response [http://rdmkyg.iptime.org/dataset/swwage.xlsx]
## Date: 2021-05-08 08:48
## Status: 200
## Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
## Size: 11.3 kB
## <ON DISK> /tmp/RtmpUTEERI/file23d1357e8202.xlsx
swwage <- read_excel(tf, 1L) # 1L은 sheet 1을 이야기 하는 것이다.
# head 로 데이터 보기
head(swwage)
## # A tibble: 6 x 2
## 구분 일평균임금
## <chr> <dbl>
## 1 IT기획자 388724
## 2 IT컨설턴트 458818
## 3 정보보호컨설턴트 342406
## 4 업무분석가 532243
## 5 데이터분석가 347670
## 6 IT PM 411329
2. rio
rio는 readxl보다는 훨씬 업그레이드 된 버전이다. 데이터 불러오는데, 속도 차이도 별로 없고, 사용하기가 매우 편리하다.
rio 패키지는 readxl과 다르게, 임시로 저장하는 것이 없다 바로 불러와서 데이터프레임으로 가지고 온다. 여기 옵션에서 which는 worksheet의 위치를 이야기 하는 것이다.
옵션 붙이는 부분도 매우 직관적으로 잘되어 있다. 클라우드가 아닌 자신이 서버를 가지고 있다면, 이 방법은 매우 좋다. 지금과 같이 사용하는 사람이 별로 없을 때는 서버의 부담이 없다. 만약에 조회 하는 사람이 많아서 커진다면, 서버를 증설 하거나, 클라우드를 사용하는 것도 방법 중에 하나 이다.
# 라이브러리 불러오기
library(rio)
# 파일을 불러오는 path를 url변수로 정의
url = "http://rdmkyg.iptime.org/index.php/s/1RAzTvVDp3Q2Rrb/download"
# import 함수를 써서 직접 url 된 부분을 데이터 프레임으로 가져오기
swwage_1 <- import(file = url,which = 1)
head(swwage_1)
## 구분 일평균임금
## 1 IT기획자 388724
## 2 IT컨설턴트 458818
## 3 정보보호컨설턴트 342406
## 4 업무분석가 532243
## 5 데이터분석가 347670
## 6 IT PM 411329
본 블로거는 별도의 서버를 가지고 있으므로, 데이터가 발생 되는 Case가 있으면, 위 rio 방식으로 할 예정이다. 별도로 파일을 받고 싶은 사람이 있다면, 크롬 url 창에서 주소를 복사해서 불어 넣으면 엑셀 파일을 다운로드 받을 수 있다.
댓글 없음:
댓글 쓰기