728x90

고정길이 포맷 데이터

 

txt_f <- read.fwf("d:/r_class/sample.txt",widths=c(1,2,3,2,2,2,2,3,2))

txt_f

 

d:\r_class\sample.txt

 

M 1 18 2 1 4 5 42 1

F 1 19 2 1 5 5 42 3

F 1 20 3 1 4 5 43 2

F 1 21 3 2 3 4 45 7

F 1 22 3 2 4 4 45 3

F 1 23 3 3 2 3 47 5

F 1 24 3 3 1 2 49 5

F 1 25 4 3 2 2 50 1

F 1 26 5 4 3 3 51 5

F 1 27 5 4 4 5 52 5

 

scan( ), readline( ) 함수를 이용하기

 

SAS 데이터(확장자 .sas7bdat) 데이터(확장자. sas7 bdat)를 읽어 들이려면 패키지 sas7bdat을 이용합니다.

우선 sas7bdat 패키지를 설치하고 로드합니다.

 

scan( ) 함수 이용하기

 

(1) 키보드에서 읽기

> vec01 <- scan("")

> vec01

 

(2) 텍스트 파일에서 읽기

 

10 20 30

40

50

 

> vec01 <- scan("d:/r_300/10_scan_01.txt")) #

Read 5 items

[1] 10 20 30 40 50

 

> setwd("d:/r_class")

> (vec01 <- scan("scan_01.txt"))

 

(3) 소수점이 있는 경우

 

소수점이 있는 경우에는 전부 실수로 변환되어 읽어집니다..

 

10 20 30

40.4

50

 

> vec01 <- scan("scan_02.txt"))

Read 5 items

[1] 10.0 20.0 30.0 40.4 50.0

 

(4) 문자가 있는 경우

 

문자가 포함되어 있는 경우에는 아무런 옵션이 없으면 에러가 발생합니다. what="" 옵션을 지정하여 사용하면 되는데 전부 문자로 읽어 들입니다.

 

10 20 30

abc

50

 

> vec01 <- scan("scan_03.txt"))

Error in scan("scan_03.txt") : scan() expected 'a real', got 'abc'

 

(vec01 <- scan("scan_03.txt",what=""))

Read 5 items

[1] "10" "20" "30" "abc" "50"

 

(5) 한 줄씩 읽어 들일 때 - sep="\n" 옵션 지정

(vec01 <- scan("scan_03.txt",what="",sep="\n"))

Read 3 items

[1] "10 20 30" "abc" "50"

 

readline( ), readLimes( ) 함수 이용하기

 

한 줄씩 읽어 들이는 함수로 readline( )readLines( ) 함수가 있습니다.

 

(1) readline()

#10 20 30

#abc

#50

 

#(vec01 <- scan("d:/r_class/10_scan_03.txt",what="",sep="\n"))

[1] "10 20 30" "abc" "50"

 

> (vec02 <- readLines("d:/r_class/scan_03.txt")) # what 옵션 안 쓰도 됨

[1] "10 20 30" "abc" "50"

> class(vec02) # [1] "character"

> is.vector(vec02) # [1] TRUE

 

(2) read.table 의 경우

 

# 문자와 숫자가 섞여 있는 경우 - read.table() 이용

# M 150

# F 155

# M 160

> (vec01 <- scan("d:/r_class/scan_04.txt",what=""))

# [1] "M" "150" "F" "155" "M" "160"

 

> (vec01 <- read.table("d:/r_sample/10_scan_04.txt"))

# [1] "M" "150" "F" "155" "M" "160"

# V1 V2

#1 M 150

#2 F 155

#3 M 160

+ Recent posts