728x90

외부파일 중에서 가장 일반적으로 많이 사용되는 텍스트파일에 대하여 다룹니다.

텍스트 파일은 보통 데이터들 마다

빈칸으로 구분되어 있거나,

구분자를 사용하여 구분하기도 하고,

컴마로 구분된 csv 파일을 많이 사용합니다.

외부파일을 불러오는 내용은 앞으로 매번 강의 때마다 많이 사용하게 됩니다.

 

텍스트 파일 읽기와 저장하기

 

외부 파일이 빈칸으로 구분되어 있는 일반 텍스트파일인 경우 read.table(“파일이름”)을 사용합니다.

read.table 함수를 읽어 들인 경우 데이터 타입은 data.frame입니다.

외부 텍스트 파일을 이용하는 경우에는 대부분 데이터프레임으로 구성됩니다..

 

(1) 첫 행에 변수명이 없는 경우

 

외부파일이 d:\r_class\sample.txt 에 저장되어 있고, 그 형태는 다음과 같습니다.

각 변수마다 빈칸으로 구분되어 있습니다

 

(외부파일 )

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

 

 

(실행 결과 및 설명)

 

> # 첫 행에 변수명이 없는 경우

> txt_R1 <- read.table("d:\r_class\sample.txt")

> #setwd("d:/r_class")

> #read.table("sample.txt")

> head(txt_R1)

# 변수명 V1, V2, ..., V9 같이 V로 시작되는 변수명이 자동으로 생깁니다.

V1 V2 V3 V4 V5 V6 V7 V8 V9

1 M 1 18 2 1 4 5 42 1

2 F 1 19 2 1 5 5 42 3

3 F 1 20 3 1 4 5 43 2

4 F 1 21 3 2 3 4 45 7

5 F 1 22 3 2 4 4 45 3

6 F 1 23 3 3 2 3 47 5

 

# 외부 파일을 읽어 오는 경우 data.frame 형태가 됩니다.

> class(txt_R1)

[1] "data.frame“

> str(txt_R1)

 

 

(2) 첫 행에 변수명이 있는 경우

 

첫 행에 변수명이 있는 경우, header=TRUE 옵션을 이용합니다.

 

> txt_R2 <- read.table("d:\r_class\sample_h.txt",header=TRUE)

> head(txt_R2)

gender mar age edu his work pay wage hob

1 M 1 18 2 1 4 5 42 1

2 F 1 19 2 1 5 5 42 3

3 F 1 20 3 1 4 5 43 2

4 F 1 21 3 2 3 4 45 7

5 F 1 22 3 2 4 4 45 3

6 F 1 23 3 3 2 3 47 5

 

 

(3) 변수명이 있는데 header=TRUE 옵션을 안 쓰면

 

1 행에 변수명이 있는데 header=TRUE 옵션을 붙이지 않으면, 변수명이 들어있는 1행이 데이터로 읽혀서 이상한 형태가 데이터가 되고 10개의 데이터가 11개의 데이터가 되며 이상항 형태가 되니 주의해야 합니다.

 

> txt_R3 <- read.table("d:/r_class/sample_h.txt")

> txt_R3

V1 V2 V3 V4 V5 V6 V7 V8 V9

1 gender mar age edu his work pay wage hob

2 M 1 18 2 1 4 5 42 1

3 F 1 19 2 1 5 5 42 3

4 F 1 20 3 1 4 5 43 2

5 F 1 21 3 2 3 4 45 7

6 F 1 22 3 2 4 4 45 3

7 F 1 23 3 3 2 3 47 5

8 F 1 24 3 3 1 2 49 5

9 F 1 25 4 3 2 2 50 1

10 F 1 26 5 4 3 3 51 5

11 F 1 27 5 4 4 5 52 5

 

(4) 첫 행에 변수명이 없는 경우, 변수명을 지정하는 경우

 

첫 행에 변수명이 없는 경우, 변수명을 지정하는 해야 하는 경우에는 col.names 옵션을 사용하거나, names( )함수를 이용하여 변수명을 지정합니다.

 

> txt_R4 <- read.table("d:\r_class\sample.txt",

col.names=c("gender","mar","age","edu","his","work","pay","money","hob"))

 

 

다음은 데이터를 만든 다음 names( ) 함수를 이용하여 변수명을 할당하는 방법입니다.

 

txt_R4 <- read.table("d:/r_class/sample.txt")

txt_R4

names(txt_R4) <- c("gender","mar","age","edu","his","work","pay","wage","hob")

txt_R4

 

(5) 외부파일로 저장하기

 

R에서 만들어진 데이터를 외부 파일로 저장하려면 wrtie.table( ) 함수를 이용합니다.

 

write.table(txt_R4,"d:/r_class/sample_w1.txt")

write.table(txt_R4,"d:/r_class/sample_w2.txt",row.names=F)

write.table(txt_R4,"d:/r_class/sample_w3.txt",col.names=F,row.names=F)

 

r1_file_txtw_01

 

 

r1_file_txtw_01

 

 

 csv 파일 읽기와 저장하기

 

쉼표로 구분되어 있는 CSV(Comma Separated Values) 파일에서 데이터를 읽어오는 경우입니다. read.csv 함수를 이용하면 CSV 파일을 읽어 들일 수 있습니다.

 

read.csv(“파일이름”)

 

csv 파일에 헤더라인이 없으면 header=FALSE 옵션을 지정합니다.

 

변수 6개로 구성된 데이터를 읽어 들인다. 변수 사이에 컴마(‘)로 구분되어 있습니다.

 

(외부파일)

d:\r_class\sample_h.csv d:\r_class\sample.csv

gender,mar,age,edu,his,work,pay,money,hob

M,1,18,2,1,4,5,42,1 M,1,18,2,1,4,5,42,1

F,1,19,2,1,5,5,42,3 F,1,19,2,1,5,5,42,3

F,1,20,3,1,4,5,43,2 F,1,20,3,1,4,5,43,2

F,1,21,3,2,3,4,45,7 F,1,21,3,2,3,4,45,7

F,1,22,3,2,4,4,45,3 F,1,22,3,2,4,4,45,3

F,1,23,3,3,2,3,47,5 F,1,23,3,3,2,3,47,5

F,1,24,3,3,1,2,49,5 F,1,24,3,3,1,2,49,5

F,1,25,4,3,2,2,50,1 F,1,25,4,3,2,2,50,1

F,1,26,5,4,3,3,51,5 F,1,26,5,4,3,3,51,5

F,1,27,5,4,4,5,52,5 F,1,27,5,4,4,5,52,5

 

 

(R 소스)

 

csv_R1 <- read.csv("d:/r_class/sample_h.csv")

csv_R1

head(csv_R1)

csv_R2 <- read.csv("d:/r_class/sample_h.csv",header=T)

head(csv_R2)

 

 

 

(1) 첫 행에 변수명이 있는 경우 - 디폴트

 

d:\r_class\sample_h.csv 와 같이 첫 행에 변수명이 있는 경우에는 다음과 같이 사용합니다. 디폴트가 변수명이 있는 경우입니다.

 

> csv_R1 <- read.csv("d:/r_class/sample_h.csv")

> csv_R1

> head(csv_R1)

 

gender mar age edu his work pay wage hob

1 M 1 18 2 1 4 5 42 1

2 F 1 19 2 1 5 5 42 3

3 F 1 20 3 1 4 5 43 2

4 F 1 21 3 2 3 4 45 7

5 F 1 22 3 2 4 4 45 3

6 F 1 23 3 3 2 3 47 5

 

> csv_R2 <- read.csv("d:/r_class/sample_h.csv",header=T)

> head(csv_R2)

 

(2) 첫 행에 변수명이 없는 경우 - header=FALSE

 

첫 행에 변수명이 없으므로 header=FALSE 옵션을 사용합니다. 그러면 변수명이 V1, V2 형식으로 자동적으로 주어지고 10개의 데이터를 읽어들인다.

 

csv_R3 <- read.csv("d:/r_class/sample.csv",header=F)

head(csv_R2)

 

V1 V2 V3 V4 V5 V6 V7 V8 V9

1 M 1 18 2 1 4 5 42 1

2 F 1 19 2 1 5 5 42 3

3 F 1 20 3 1 4 5 43 2

4 F 1 21 3 2 3 4 45 7

5 F 1 22 3 2 4 4 45 3

6 F 1 23 3 3 2 3 47 5

 

(2) csv 파일로 저장하기

 

> csv_R1$sat <- csv_R1$work + csv_R1$pay;

> csv_R1

> write.table(csv_R1,"d:/r_class/sample_w1.csv") # 행번호가 생김

> write.table(csv_R1,"d:/r_class/sample_w2.scv",row.names=F) # 행번호가 없도록

> write.table(csv_R1,"d:/r_class/sample_w3.csv",col.names=F,row.names=F)

 

 

 

 

 

 

 

 

 

 

 

구분자로 분리되어 있는 경우 - sep

 

첫 행에 변수명이 없으므로 header=FALSE 옵션을 사용합니다. 그러면 변수명이 V1, V2 형식으로 자동적으로 주어지고 10개의 데이터를 읽어들인다.

 

(1) 구분자로 분리되어 있는 경우 구분자 “:”

 

hei | wei

155 | 58

160 | 60

165 | 63

170 | 68

175 | 70

 

(R 소스)

> dataf3

txt_S <- read.table(file="d:/r_class/sample_s.txt",sep="|")

txt_S

txt_S <- read.table(file="d:/r_class/sample_s.txt",sep="\t|")

txt_S

 

 

 

 

d:\r_class\sample_s.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|

 

txt_S <- read.table(file="d:/r_class/sample_s.txt",sep="|")

txt_S

 

 

(2) 탭으로 구분되어 있는 경우

 

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

 

txt_S <- read.table(file="d:/r_class/sample_s.txt",sep="\t|")

txt_S

 

+ Recent posts