Loading data
from Text
https://www.youtube.com/watch?v=aMYCFtoBrdA by Gopal Malakar
fread
dat파일 못읽음.
일반적인(각 행이 같은 열갯수를 가진 delimited files에 적용하고, 아닌면 read.table사용
txtString <- " 1 3 4 2 2 7 5 2 2 1 4 1 3 3 2 2 1 1 " > fread(txtString) V1 V2 V3 V4 V5 V6 1: 1 3 4 2 2 7 2: 5 2 2 1 4 1 3: 3 3 2 2 1 1 > read.table(txtString) Error in file(file, "rt") : cannot open the connection In addition: Warning message: In file(file, "rt") : cannot open file ' 1 3 4 2 2 7 5 2 2 1 4 1 3 3 2 2 1 1 ': No such file or directory
read.table() with textConnection()
read.table("A.txt", header=F, sep = "|", fill=T, quote="", stringsAsFactors=F)
read.table함수는 file을 소스로 읽어들이기 때문에, textConnection이라는 트릭이 필요하다.
없으면, Error in file(file, "rt") : cannot open the connection
이라는 에러발생
(따라서, Data를 저장된 txt파일로 만들어 사용할때도 있다.
Default로 구분자는 공백문자, 소수점으로 도트 문자 사용)
txtString <- " Name physics math Matthew 15 20 James 20 15 Messi NA 21 emily 44 100 Sixx 98 98 " dd <- read.table(file=textConnection(txtString), header=T, sep=" ", stringsAsFactor=F) %>%data.table closeAllConnections() #--------------- dd %>% str # Classes ‘data.table’ and 'data.frame': 5 obs. of 3 variables: # $ Name : chr "Matthew" "James" "Messi" "emily" ... # $ physics: int 15 20 NA 44 98 # $ math : int 20 15 21 100 98 # - attr(*, ".internal.selfref")=
txtString <- " 1 3 4 2 2 7 5 2 2 1 4 1 3 3 2 2 1 1 " con<- textConnection(txtString) tt=read.table(con) closeAllConnections() # V1 V2 V3 V4 V5 V6 # 1 1 3 4 2 2 7 # 2 5 2 2 1 4 1 # 3 3 3 2 2 1 1
https://onunicornsandgenes.blog/2014/03/06/using-r-common-errors-in-table-import/
DD <- read.table( "http://www-bcf.usc.edu/~gareth/ISL/Auto.csv", header=T, sep=",", quote = "\\"", na.strings=c("NA", "-", "?"))
from Excel :: library(readxl)
https://cran.r-project.org/web/packages/readxl/index.html
http://blog.naver.com/hancury?Redirect=Log&logNo=220332744275
Hadley Wickham이 Rcpp로 개발한 readxl 패키지
read_excel( path, # 엑셀파일의 경로 sheet=1, # String은 sheet명, integer는 sheet순(default 1) col_names=TRUE, # 각 column의 이름 존재 유무 (X1,X2, ...Xn) col_types=NULL, # "blank","numeric","date","text". na="", # Missing value 처리 (default 빈칸) skip=0) # skip할 행
read_xlsx 또는 read_excel
library('readxl') # 팩키지 제공 예제 Excel파일 # /R/win-library/3.3/readxl/extdata/datasets.xlsx src_file <- system.file("extdata/datasets.xlsx", package = "readxl") read_excel(src_file) %>% data.table() read_excel(src_file, 2) # 2번째 sheeet read_excel(src_file, "mtcars") # mtcars라는 이름의 sheet
excel_sheets
엑셀파일안에 모든 sheets를 보여준다.
sheets_names <- excel_sheets(src_file) # Sheet명 "iris" "mtcars" "chickwts" "quakes" # 활용예 excel_sheets(src_file) %>% map( read_excel, path=src_file)
from URL
Url에서 직접 로드
theUrl <- 'http://jaredlander.com/data/wifi.rdata' con <- url(theUrl) load(con) close(con) wifi %>% print()
Url에서 다운받아서 로드
theUrl <- 'http://jaredlander.com/data/wifi.rdata' # if (!file.exists("wifi.rdata") || now() > file.mtime("wifi.rdata") + weeks(4)) download.file(url=theUrl, destfile ="./data/wifi.rdata") load("./data/wifi.rdata") close("./data/wifi.rdata") wifi %>% print()
temp download.file unzip
url ="https://raw.githubusercontent.com/curiousily/TensorFlow-on-Android-for-Human-Activity-Recognition-with-LSTMs/master/data/WISDM_ar_v1.1_raw.txt" download.file(url, destfile=file.path(DATA_PATH,"WISDM_ar_v1.1_raw.txt"))
# http://archive.ics.uci.edu/ml/datasets/Smartphone-Based+Recognition+of+Human+Activities+and+Postural+Transitions URL="http://archive.ics.uci.edu/ml/machine-learning-databases/00341/HAPT%20Data%20Set.zip" temp <- tempfile() download.file(URL, temp) unzip(temp, exdir=file.path(DATA_PATH,"HAPT")) unlink(temp)
read.fwf()
fixed width file, 구분자가 아닌 고정된 폭 구조의 데이터
ff <- tempfile() cat(file = ff, "123456", "987654", sep = "\ ") read.fwf(ff, widths = c(1,2,3)) #> 1 23 456 \\ 9 87 654 read.fwf(ff, widths = c(1,-2,3)) #> 1 456 \\ 9 654 unlink(ff) # V1 V2 V3 # 1 1 23 456 # 2 9 87 654 # # V1 V2 # 1 1 456 # 2 9 654 cat(file = ff, "123", "987654", sep = "\ ") read.fwf(ff, widths = c(1,0, 2,3)) #> 1 NA 23 NA \\ 9 NA 87 654 unlink(ff) # V1 V2 V3 V4 # 1 1 NA 23 NA # 2 9 NA 87 654 cat(file = ff, "123456", "987654", sep = "\ ") read.fwf(ff, widths = list(c(1,0, 2,3), c(2,2,2))) #> 1 NA 23 456 98 76 54 unlink(ff) # V1 V2 V3 V4 V5 V6 V7 # 1 1 NA 23 456 98 76 54
외부 CSV파일 한글깨짐 - mac
csv 데이터를 가져오는 방법은 fread와 read.csv(read.table) 정도가 있는데,
macbook을 사용하다보면 한글이 깨지는 경우가 많다. 이때 macos의 excel로 해당파일을 열어봐도 깨져있는경우는 os 자체가 제대로 지원하지 않는다고 볼수 있어, 원본 파일을 수정하는 방법밖에는 없다.
excel> DATA> from text (외부데이터가져오기)>
delimited 선택, file_origin:Korean(MacOS) > Comma> 완료.