R을 사용하여 압축 된 데이터 파일 다운로드, 데이터 추출 및 가져 오기
트위터의 @EZGraphs는 다음과 같이 썼다.
나는 오늘도 파일을 수동으로 다운로드했지만 zip 파일을 수동으로 다운로드했습니다.
나는 다음과 같은 것을 시도했다 :
fileName <- "http://www.newcl.org/data/zipfiles/a1.zip"
con1 <- unz(fileName, filename="a1.dat", open = "r")
하지만 멀리 떨어져 떨어져있는 것 같아요. 이견있는 사람?
Zip 아카이브는 실제로 컨텐츠 메타 데이터 등이있는 '파일 시스템'입니다. 자세한 내용 help(unzip)
은 참조하십시오. 위에서 스케치 한 것을 수행 비용
- 임시 직원을 만듭니다. 파일 이름 (예를 들어
tempfile()
) download.file()
파일을 임시로 가져 오는 데 사용 합니다. 파일unz()
temp에서 대상 파일을 추출하는 데 사용 합니다. 파일- 통해 임시 파일을 제거
unlink()
코드에서 (기본 예제 덕분에 더 간단합니다)
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
data <- read.table(unz(temp, "a1.dat"))
unlink(temp)
압축 ( .z
) 또는 gzipped ( .gz
) 또는 bzip2ed ( .bz2
) 파일은 파일 일 뿐이며 연결에서 직접 읽을 수 있는 파일 입니다. 따라서 데이터 공급자가 대신 사용하십시오. :)
기록을 위해 Dirk의 답변을 코드로 번역했습니다.
temp <- tempfile()
download.file("http://www.newcl.org/data/zipfiles/a1.zip",temp)
con <- unz(temp, "a1.dat")
data <- matrix(scan(con),ncol=4,byrow=TRUE)
unlink(temp)
http://cran.r-project.org/web/packages/downloader/index.html에있는 CRAN 패키지 "downloader"를 사용했습니다 . 훨씬 쉽게.
download(url, dest="dataset.zip", mode="wb")
unzip ("dataset.zip", exdir = "./")
Mac (그리고 나는 리눅스를 가정) ...
zip 아카이브에 단일 파일이 포함 된 경우 패키지 funzip
와 함께 bash 명령을 사용할 수 있습니다 .fread
data.table
library(data.table)
dt <- fread("curl http://www.newcl.org/data/zipfiles/a1.zip | funzip")
아카이브에 여러 파일이 포함 된 경우 tar
대신 특정 파일을 stdout으로 추출 할 수 있습니다 .
dt <- fread("curl http://www.newcl.org/data/zipfiles/a1.zip | tar -xf- --to-stdout *a1.dat")
다음은 read.table
함수 로 읽을 수없는 파일에 대한 예제입니다 . 이 예제는 .xls 파일을 읽습니다.
url <-"https://www1.toronto.ca/City_Of_Toronto/Information_Technology/Open_Data/Data_Sets/Assets/Files/fire_stns.zip"
temp <- tempfile()
temp2 <- tempfile()
download.file(url, temp)
unzip(zipfile = temp, exdir = temp2)
data <- read_xls(file.path(temp2, "fire station x_y.xls"))
unlink(c(temp, temp2))
이 코드를 사용합니다. 그것은 나를 위해 작동합니다 :
unzip(zipfile="<directory and filename>",
exdir="<directory where the content will be extracted>")
예 :
unzip(zipfile="./data/Data.zip",exdir="./data")
data.table을 사용하여 다음이 작동을 수행합니다. 불행히도 링크가 더 이상 작동하지 사용 다른 데이터 세트에 링크를 사용했습니다.
library(data.table)
temp <- tempfile()
download.file("https://www.bls.gov/tus/special.requests/atusact_0315.zip", temp)
timeUse <- fread(unzip(temp, files = "atusact_0315.dat"))
rm(temp)
bash는 거기에 거기에 있기 때문에 이것이 하나의 줄로 가능하다는 것을 fread
다운로드하고 .zip 파일을 추출하여 단일 파일을 전달하는 방법을 모르겠습니다 fread
.
'IT' 카테고리의 다른 글
오류 :이 범위에서 'NULL'이 유효하지 않습니다. (0) | 2020.07.20 |
---|---|
django : select_related와 get_object_or_404를 함께 사용 (0) | 2020.07.20 |
한 파일에서 다른 파일에있는 행 삭제 (0) | 2020.07.20 |
javax.el.PropertyNotFoundException 노출 및 해결 : 도달 할 수없는 대상 (0) | 2020.07.20 |
jQuery를 사용하여 30 분 안에 쿠키를 종료하는 방법은 무엇입니까? (0) | 2020.07.20 |