본문 바로가기

통계

[R 활용 TIP] 엑셀 데이터를 R에 붙여넣기



글 : 인지심리 매니아


R은 텍스트나 엑셀 , SPSS 데이터 등 다양한 자료를 읽을 수 있다. 하지만 파일을 불러오려면 저장 경로를 일일이 입력해야 하는 등 불편한 점이 있다. 그래서 필자는 엑셀에서 데이터를 복사한 다음 붙여넣기 하는 방법을 선호한다. 


그러면 복사한 데이터는 어디에 붙여넣어야 할까? 프롬프트 창에? data.entry() 명령어를 써서 스프레드 시트를 연 다음 붙이면 될까? 해보면 알겠지만 소용없을 것이다. 그래서 필자가 간단한 팁을 소개하려고 한다.


첫번째, 자료가 수치형일 경우 scan 함수를 사용해서 붙여넣으면 된다. 먼저 scan 명령어로 해당 변수에 자료를 입력할 수 있는 상태를 만든 다음, 커서가 ‘1: ‘옆에서 깜박거리면 복사한 데이터를 붙여넣기(Ctrl+V) 한다. 그러면 수치들이 각 행에 자동으로 입력된다. 더 입력할 자료가 없으면 엔터를 눌러서 붙여넣기를 완료한다.


> x=scan()

1: 1

2: 1

3: 0.8

4: 1

5: 0.6

6: 0

…...

37: 1

38: 

Read 37 items


그런데 이 방법은 수치형 데이터를 입력할 때만 사용할 수 있고,  한 ‘열'의 데이터만 옮길 수 있다는 단점이 있다. 만약 아래처럼 (글자를 포함한) 다수의 열로 구성된 데이터를 복사하려면 어떻게 해야 될까?


재수강  0.6

재수강  0.8

재수강  1

신규     1

신규     1

.

.


이 경우 read.DIF 명령어를 사용하면 문자형 데이터를 포함한 모든 열을 동시에 불러올 수 있다. R은 이 명령어를 통해 데이터를 Data Interchange Format(DIF)으로 읽어들인다. 사용 방법은 간단하다. 먼저 엑셀에서 해당 데이터를 복사(Ctrl+C)한다. 그 다음 read.DIF 명령문을 사용하면 클립보드에 있던 데이터가 변수에 저장된다(데이터를 복사하기 전에 명령문을 입력하면 에러가 난다). 


# 먼저 엑셀 데이터를 복사한 다음, 아래 명령문을 입력한다

> NewX=read.DIF("clipboard", transpose=TRUE)

> NewX

       V1  V2

1  재수강 1.0

2  재수강 1.0

3  재수강 0.8

4  재수강 1.0

5  재수강 0.6

6  재수강 0.0

.

.

.

37   신규 1.0


잠깐, 복사한 자료들을 분석에 사용하라면 NewX라는 자료구조를 attach 명령어로 불러들여야 한다. 그런 다음에야 각 변수(V1, V2)의 자료들을 사용할 수 있다.


> attach(NewX)

> V1

 [1] 재수강 재수강 재수강 재수강 재수강 재수강 재수강 재수강 재수강 신규  

[11] 신규   신규   신규   신규   신규   재수강 재수강 재수강 재수강 재수강

[21] 신규   신규   신규   신규   신규   신규   신규   재수강 재수강 재수강

[31] 재수강 재수강 신규   신규   신규   신규   신규  

Levels: 신규 재수강



스프레드시트 데이터를 R에 붙여넣기 하는 방법을 알아봤다. 혹시 더 좋은 방법을 알고 있을 경우 필자에게 꼭 알려주길 바란다.