글 : 인지심리 매니아
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에 붙여넣기 하는 방법을 알아봤다. 혹시 더 좋은 방법을 알고 있을 경우 필자에게 꼭 알려주길 바란다.