#title 자료 불러오기 [[TableOfContents]] ==== 방법 ==== R에서 자료를 불러들이는 방법에는 크게 4가지가 있다. * 직접 입력하기 * 복사해서 붙이기 * 파일에서 불러오기 * DB에서 불러오기 ==== 복사해서 붙이기 ==== 복사해서 붙이는 방법은 간단하다. 엑셀에서 데이터를 입력하고 원하는 부분을 선택하고 Ctrl-C를 눌러서 복사를 한다. attachment:자료불러오기/r01.jpg 복사를 한 내용은 clipboard라는 곳에 임시로 저장된다. read.table 함수는 파일에서 표를 불러들이는 데 clipboard도 파일처럼 다룰 수 있다. {{{ > read.table('clipboard',header=T) id age 1 1 23 2 2 35 3 3 19 }}} 엑셀만이 아니라 워드, SPSS, 웹페이지, 텍스트파일, CSV 파일도 같은 방법으로 불러들일 수 있다. ==== 파일에서 불러오기 ==== 여기서 다룰 파일 형식은 텍스트, CSV, SPSS, 엑셀 네 가지이다. 나머지 다른 종류의 파일들도 방법은 비슷하므로 도움말을 찾아보면 쉽게 할 수 있다. ===== 텍스트 파일 ===== read.table 함수는 텍스트 파일을 읽어서 데이터프레임으로 만들어준다. 기본적인 사용법은 간단하다. 다음과 같은 텍스트 파일 test.txt가 있을 때 1 김갑수 22 2 박을동 36 3 서병진 19 다음과 같이 입력하면 된다. > read.table("test.txt") 만약 텍스트 파일의 첫 줄에 아래처럼 변수 이름이 포함되어 있다면 {{{ id name score 1 김갑수 22 2 박을동 36 3 서병진 19 }}} 다음과 같이 header를 참(T)으로 설정한다. {{{ > read.table("test.txt", header=T) }}} 만약 빈 칸 대신 쉼표로 구분되어 있다면 {{{ id,name,score 1,김갑수,22 2,박을동,36 3,서병진,19 }}} delim을 쉼표로 설정한다. {{{ > read.table("test.txt", header=T, delim=",") }}} ===== CSV 파일 ===== CSV(Comma-Seperated Values)은 엑셀을 비롯한 여러 계산 프로그램들이 지원하는 파일형식이다. 변수 사이를 빈 칸 대신 쉼표로 띄워쓴 텍스트 파일이기 때문에 read.table 함수에서 header=T, delim=","으로 설정하면 되지만 간단히 read.csv 함수를 사용해도 된다. {{{ > read.csv("test.csv") }}} read.csv 함수는 read.table 함수를 바탕으로 만들어졌기 때문에 다른 모든 옵션의 사용법이 동일하다. ===== 고정간격형식 ===== 설문지 등을 고정간격형식인 텍스트 파일로 코딩하는 경우가 많다. 고정간격형식이란 각 변수가 차지하는 칸 수를 고정시킨 것을 말한다. 예를 들어 아래의 경우를 보자. {{{ 54321|1|01|80|1|0|1|1| 54322|0|02|79|1|0|1|1| }}} 첫번째 변수는 5칸, 두번째 변수는 1칸, 세번째 변수는 2칸 형식으로 각 변수가 차지하는 칸수가 조정되어 있다. ( | 표시는 보기쉽게 하기 위해 넣은 것으로 실제 파일에는 없다.) read.fwf 함수는 이런 형식의 파일을 읽어들인다. 사용법은 다른 종류의 read 계열 함수들과 같다. 단 widths 옵션에 변수들이 차지하는 칸수를 벡터로 넣어주면 된다. 예를 들어 위의 파일처럼 각 변수가 5칸, 1칸, 2칸, 2칸 1칸, 1칸, 1칸, 1칸을 차지한다면 다음과 같다. {{{ read.fwf( filename, widths=c(5,1,2,2,1,1,1,1) ) }}} 대부분의 경우 앞부분은 신상정보에 해당하는 변수기 때문에 칸의 간격이 들쭉날쭉하지만 뒷쪽으로 가면 1칸만 차지하는 경우가 많다. 1을 여러번 입력하는 대신 rep 함수를 이용한다. 위의 경우 1이 4번 반복되므로 다음과 같이 한다. {{{ read.fwf( filename, widths=c(5,1,2,2, rep(1,4) ) ) }}} 만약 중간에 몇 칸을 제외하고 싶다면 양수 대신 음수로 표기한다. 예를 들어 위에서 세 번째 변수에 해당하는 두 칸을 건너뛰겠다면 다음과 같이 한다. {{{ read.fwf( filename, widths=c(5,1,-2,2,rep(1,4))) }}} ===== SPSS 파일 ===== foreign 패키지를 이용하면 다른 통계패키지의 데이터 파일을 불러들일 수 있다. SPSS의 SAV 파일은 read.spss 함수를 사용한다. {{{ > library(foreign) > dat = read.spss("test.sav") }}} ===== Excel 파일 ===== ODBC(Open DataBase Connectivity)란 서로 다른 종류의 데이터베이스에 동일한 방법으로 접속할 수 있도록 만든 표준이다. RODBC 패키지를 이용하면 R에서도 DB에 있는 자료를 불러오거나 DB에 자료를 저장할 수 있다. MS엑셀도 ODBC로 접속할 수 있다. 먼저 다음과 같은 test.xls라는 엑셀 파일이 있다고 하자. attachment:자료불러오기/r02.jpg 그러면 R에서 다음과 같은 명령으로 불러들일 수 있다. {{{ > library(RODBC) # RODBC를 불러들인다. > xls = odbcConnectExcel("hills.xls") # 엑셀 파일에 접속한다. > sheet1 = sqlFetch(xls, "Sheet1") # 엑셀 파일의 Sheet1 시트를 읽는다. > sheet1 id name score 1 1 김갑수 22 2 2 박을동 36 3 3 서병진 19 4 4 조정인 45 5 5 이무영 10 6 6 김기창 30 7 7 오경인 22 8 8 유신설 17 9 9 정임영 33 10 10 김계현 42 }}} ==== DB에서 불러오기 ==== {{{ library("RODBC") conn <- odbcConnect("26") data <- sqlQuery(conn, " select accountkey , sum(saleamt) amt , log(sum(saleamt)) log_amt from cji_eis.PubSales.Fact_Sales where datekey between 20100601 and 20100630 and gamekey = 20 group by accountkey ") hist(data$log_amt) }}} ==== 출처 ==== * http://www.remantu.com/r/tutorial/load-data