프로그래밍 /R

R로 데이터 가져오기 (1)

yooj_lee 2019. 6. 12. 16:00
300x250

데이터 가져오기

1. CSV 가져오기

정확히 말하자면 첫번째 인자인 파일명은 파일의 전체 경로이다.

1) read.csv("파일명")

: 인강에서는 가장 많이 쓰이는 방법이라고 했으나, 책에서는 여러 문제가 많이 발생할 수 있다고 read.table() 쓰라네.

 

2) read.table("파일명", sep = ",")

: 전달받은 file을 읽어와서 data.frame을 리턴한다. file path, sep 이외에 header, stringsAsFactors 등의 인자가 있다.

header는 불러들일 데이터의 첫번째 행이 열의 이름을 나타내는지 명시한다. stringsAsFactors는 FALSE로 지정하게 되면 character 열이 factor 열로 자동 변환되는 것을 막을 수 있다. 이 경우 연산 시간을 단축할 뿐 아니라, character 데이터를 그대로 유지해 좀 더 데이터를 쉽게 다룰 수 있다.

 

3) read.delim("파일명", sep = ",")

: delim은 delimited의 줄임말로서 범위가 지정된? 이런 뜻인 것 같은데 그냥 구분 문자(delimiter), 구분된의 뜻인 듯하다. 

 

**read.csv() vs. read.table() vs. read.delim()

: 간단히 말하면 read.csv()와 read.delim()은 read.table()의 wrapper function이라고 할 수 있다. (쉬운 연산을 위해 미리 인자에 default 값을 지정해줌) 즉, read.csv() == read.table(sep = ",") 이고 read.delim() == read.table(sep = "\t") 이다. read.csv()는 콤마로 구분된 파일을 좀 더 빠르게 읽기 위해 read.table()에서 sep 인자를 미리 ","로 지정해둔 것이고, read.delim()은 \t(tab)으로 구분된 파일을 좀 더 빠르게 읽기 위해 read.table()에서 sep 인자를 미리 "\t"로 지정해둔 것이다.

 

cf.) csv(또는 탭으로 구분된 파일)은 때때로 허술하게 만들어져 셀 구분자가 셀 안에 사용되는 경우가 있다. 이 경우에는 read.table() 대신 read.csv2() 혹은 read.delim2() 를 사용해야 한다.

 

2. TSV 가져오기(tsv: tab separated)

: read.table("파일명", sep = "\t") or read.delim(file = file)

 

3. 기타 구분자로 구분된 데이터 가져오기

: read.delim("파일명", sep = "구분자")

or read.table(file = file, sep = sep)

 

→ 그냥 read.table()을 쓰는 게 가장 나을 듯하다.

 

 

300x250