獨斷論

통계 R에서 데이터 파일 불러오는 방법 본문

과학과 기술/R 통계

통계 R에서 데이터 파일 불러오는 방법

부르칸 2014. 4. 17. 06:29

Data file을 통계 R에 어떻게 불러와야만 할까?

SPSS같은것만 쓰다가 이런 명령어를 손으로 쳐야만 하는 프로그램을 쓰려면 힘든 것이 데이터 파일 불러오는 것이다.

 

다른 하급프로그램 언어와는 달리 통계 R은 데이터 파일을 불러 오는 것이 그렇게 어렵지 않다.

 

주로 사용하는 명령어는 아래와 같다.

read.table(file_name, header = FALSE, sep = "", stringsAsFactors = system_default)

read.csv(file_name, header = TRUE, sep = ",")

# 이외에 여러가지 option arguments가 있지만 주로 많이 사용하는 것만 위에 표시하였다.

주로 read.table()read.csv()를 이용한다.

read.table은 데이터 파일에 변수값을 무엇으로 구분했는지 선택할수있고

read.table은 데이터 파일의 변수값을 꼭 쉼표(comma 즉 , )로 구분했을때만 사용하는 방법이다.

 

우선 임의의 데이터 파일이 아래와 같다고 가정할때 어떻게 통계 R의 workspace로 불러올수 있는지 실습해보자. 

우선 아래 데이터파일을 다운 받아 R의 working directory로 이동시킨다. 

쉼표로 분리된 파일:  

datafilecomma.csv
다운로드

탭으로 분리된 파일: 

datafiletab.txt
다운로드

공백으로 분리된 파일:  

datafilespace.prn
다운로드

 

 

엑셀에서 파일을 다른이름으로 저장하기를 눌러서 그 저장형태를 쉼표와 탭과 공백으로 선택하면 자동으로 확장자가 csv, txt, prn으로 된다. 

 

쉼표로 분리된 파일을 통계 R에서 불러이는 방법

만약 위 파일을 내려받아서 c:\tmp에 저장했다고 가정하자(각자 작업하는 디렉토리가 다르므로 이를 다르게 입력하면 된다). 

1) read.table()로 읽는 방법

> HRT.dat <- read.table("c:/tmp/datafilecomma.csv", header=TRUE, sep=",", stringsAsFactors=FALSE)    #이건 한줄로 입력하는 것이다. 

> HRT.dat

   body_temp gender heart_beat

1       37.5      1         70

2       36.0      1         68

3       36.3      1         69

4       37.1      1         75

5       36.5      1         78

6       39.0      1         83

7       37.6      2         81

8       36.8      2         79

9       36.0      2         69

10      38.1      2         89

11      39.0      2         89

12      38.7      2         93

> HRT.dat[["body_temp"]]

 [1] 37.5 36.0 36.3 37.1 36.5 39.0 37.6 36.8 36.0 38.1 39.0 38.7

  • read.table의 첫번째 옵션으로 파일명을 입력했는데 여기에 디렉토리도 같이 입력해주어야만 한다. 
    주의해야할 것은 윈도우즈에서는 디렉토리를 역슬레쉬(보통 한국어 윈도우즈는 \)로 표시하지만
    R은 슬레쉬(/)로 표시한다. 리눅스 시스템에서 디렉토리를 슬레쉬로 표시하기때문인 것 같다. 
  • 두번째 옵션에서 header=TRUE라는 것은 데이터파일의 첫번째 줄에 body_temp, gender, heart_beat를 변수로 읽어들이라는 것을 의미한다. 
  • 세번째 sep=","는 분리자가 쉼표라는 것을 표시한다. 
  • 네번째 stringsAsFactors=FALSE는 문자열을 factor로 자동으로 바꾸지 말라는 것을 의미하는데
    여기서 데이터파일에 문자열은 없으므로 여기 예제에서는 생략해도 무방한다. 

 

2) read.csv()로 읽는 방법

read.csv()로 읽을때는 sep=","만 생략해주면 된다. 

> HRT.dat1 <- read.csv("c:/tmp/datafilecomma.csv", header=TRUE, stringsAsFactors=FALSE)  # 이건 한줄로 입력하는 것이다.

> HRT.dat1

   body_temp gender heart_beat

1       37.5      1         70

2       36.0      1         68

3       36.3      1         69

4       37.1      1         75

5       36.5      1         78

6       39.0      1         83

7       37.6      2         81

8       36.8      2         79

9       36.0      2         69

10      38.1      2         89

11      39.0      2         89

12      38.7      2         93

별로 어렵지 않다. 
 

탭으로 분리된 파일을 통계 R에서 읽어들이는 방법

역시 위의 datafiletab.txt를 C:\tmp에 저장했다고 가정하자. 

read.table()을 이용하는데 여기서 바꾸어야 할 것은 sep 옵션이다.

 

> HRT.dat2 <- read.table("c:/tmp/datafiletab.txt", header=TRUE, sep="\t", stringsAsFactors=FALSE)    #한줄로 입력

> HRT.dat2

#결과 생략
달라진 점은 오직 sep의 값을 "\t"로 바꾼 것이다.
 

공백으로 분리된 파일을 통계 R에서 읽어들이는 방법

역시 여기서도 datafilespace.prn을 C:\tmp에 저장했다고 가정하자. 

read.table()을 이용하는데 sep의 옵션만 바꾸면 된다. 

> HRT.dat3 <- read.table("c:/tmp/datafilespace.prn", header=TRUE, sep="", stringsAsFactors=FALSE)

> HRT.dat3

#결과 생략

sep 뒤에 두 개의 따옴표 안에 아무것도 넣지 않아야만 한다 (따옴표 주개를 연달아 치면 됨).

 

 

 

Comments