Small Steps Every Day

매일 천천히 조금씩 앞으로 나아가다.

통계・데이터과학/R 컴퓨팅

R 데이터의 입력과 저장, 데이터 불러오기

mindata1 2025. 3. 3. 20:42
학습목표
1. 데이터 입력에 대해 알아본다.
2. 분석한 결과를 외부 파일로 저장하는 방법에 대해 살펴본다.
3. 외부 데이터를 불러오는 방법에 대해 알아본다.

 

 

1. 데이터 입력

작업 디렉토리 설정 및 현재 디렉토리 확인
  • setwd( ) 함수를 사용해 작업 디렉토리를 변경하면 문서나 그림 파일 등에 손쉽게 접근 가능
  • D 드라이브하에 "datav" 라는 디렉토리가 만들어져 있다고 가정하면, 아래 명령을 통해 현 작업 디렉토리를 설정하고 모든 파일을 이 datav에 저장할 수 있으며 또한 저장된 자료를 불러오는 곳으로 활용 가능
> setwd('D:\\datav')
  • 현재 작업 디렉토리가 적절하게 변경되었는지 확인하기 위해 작업 디렉토리 확인을 다음과 같이 수행 가능
> getwd( )
[1] "D:\datav"

 

 

c( ) _ 데이터 입력
  • 가장 기본적인 데이터 입력방법
  • 벡터: 하나 이상의 관측값을 갖는 자료구조를 의미
  • 좌측에는 벡터 이름이 위치하며, '<-' 나 '=' 연산자는 데이터가 할당됨을 의미
  • 우측에는 입력대상이 되는 데이터의 관측값이 c 함수 내에 나타나게 됨
> x <- c(1,2,3,4,5)
> x
[1] 1 2 3 4 5

> (y <- c(10,20,30,40,50))
[1] 10 20 30 40 50

> dat <- cbind(x,y)
  • cbind: 두 벡터를 열 방향으로 결합 하는 함수
> dat
     x  y
[1,] 1 10
[2,] 2 20
[3,] 3 30
[4,] 4 40
[5,] 5 50

 

 

scan( ) _ 데이터 입력
  • 다음 함수를 실행하면 실행 프롬프트가 "1:" 로 바뀌는데 이 때 자료를 하나씩 입력하고 Enter 키를 치면 다음 값을 입력할 수 있게 됨
  • 마지막 값을 입력하고 추가로 입력 값이 없으면 그냥 Enter 를 한 번 더 치면 입력이 종료
> w1 <- scan()
1: 23
2: 4
3: 5
4: 6
5: 7
6: 
Read 5 items

> w1
[1] 23  4  5  6  7

 

 

 

2. 데이터 저장

sink( ) _ 출력 결과 파일 저장
  • 화면에 출력된 모든 결과를 파일로 저장할 수 있음
  • 시작 시 아래와 같이 저장할 파일명을 지정하고 원하는 함수를 실행 후 종료 시 sink() 로 마감하면 됨
> sink('printa.txt')
> summary(iris)
> sink()

 

파일 탐색기에서 printa.txt 를 열어보면 다음과 같은 summary 결과가 저장되었음을 확인할 수 있다.

 

 

write.csv( ) _ 데이터 저장
  • R에서 생성된 객체(object)는 외부 파일로 저장 가능한데, 경로를 별도로 지정하지 않으면 이미 설정된 작업 디렉토리에 저장됨
  • 예제: R작업 경로가 "D:/datav" 로 저장되어 있다고 하자. 아까전 생성한 dat 객체를 "dat_exam1.csv" 라는 파일로 저장해보자.
    • csv(comma separated values) : 엑셀, 노트패드 등 다양한 프로그램에서 쉽게 저장 및 편집 할 수 있는 데이터 포맷
> write.csv(dat,'dat_exam1.csv')

 

write.table( ) _ 데이터 저장
  • write.csv() 와 유사한 함수지만, 기본적으로 지정되어 있는 옵션상 차이점이 존재
  • 예제: dat 를 dat_exam2.txt 라는 텍스트 파일로 저장하고 write.csv() 함수를 사용할 경우와 비교해보자
> write.table(dat,'dat_exam2.txt')

  • 콤마 대신 공백(탭)을 기준으로 관측값을 구별하게 됨
  • 콤마를 이용해 관측값을 구별하기 위해서는 함수 내 다음과 같이 sep=" , " 라는 옵션을 추가
> write.table(dat,'dat_exam2.txt', sep=",")

 

 

 

3. 데이터 불러오기

read.csv( ) _ 데이터 불러오기
  • 저장된 csv 자료는 read.csv() 함수를 이용해 R 프로그램으로 불러올 수 있음
> dat2 <- read.csv('dat_exam1.csv')

> dat2
  X x  y
1 1 1 10
2 2 2 20
3 3 3 30
4 4 4 40
5 5 5 50
  • header=T 라는 옵션을 주게 되면 첫 번째 행의 문자열을 변수명으로 취하게 됨
    • 다만, read.csv() 함수에서는 default 옵션이므로 생략하더라도 무관
> us_dat <- read.csv('USArrested.csv',header=T)
> head(us_dat)

 

 

str( ) _ 데이터 구조 확인하기
  • 불러온 자료에 대한 구조를 다음과 같이 확인할 수 있다.
> str(dat2)
'data.frame':	5 obs. of  3 variables:
 $ X: int  1 2 3 4 5
 $ x: int  1 2 3 4 5
 $ y: int  10 20 30 40 50

 

 

read.table( ) _ 데이터 불러오기
  • 텍스트 파일은 read.csv() 외에도 read.table() 를 이용해 불러올 수 있음
  • header=T를 생략하게 되면 R은 데이터에 지정된 변수명이 없다고 생각하여 임의로 V1, V2 를 변수명으로 사용
    • 즉, read.table() 은 header=F 가 default 로 지정되어 있음을 유의
> read.table('dat_exam1.csv')

  V1       V2
1 NA ,"x","y"
2  1    ,1,10
3  2    ,2,20
4  3    ,3,30
5  4    ,4,40
6  5    ,5,50

 

 

na.srings 옵션을 이용한 결측치 결정
  • 결측치가 'NA' 로 표시됨
  • na.strings 옵션을 지정해주면 특정한 문자를 결측치로 인식 가능
> nadat <- read.csv('var.txt', na.strings='aa', header=TRUE)
> 
> nadat
  var1 var2
1   11 <NA>
2   22   bb
3   33   cc

 

 

4. 객체 확인 및 삭제

ls( ) _ 객체 확인
  • 작업하다 보면 여러 객체들이 생성되어 일일이 확인하기 어려울 경우가 있는데 이때 ls() 함수를 사용하면 현재 만들어진 객체를 모두 확인 가능
> ls()
 [1] "dat"   "dat2"  "dat3"  "nadat" "order" "var"   "var1"  "var2"  "w1"    "x"     "y"

 

 

rm( ) _ 모든 객체 삭제
  • 생성된 모든 객체를 지우고 싶다면 다음을 수행
> rm(list=ls())

> ls()
character(0)