자료 파일의 입출력
1. 데이터 프레임의 입출력
[1] write.table()과 read.table()
데이터프레임이나 행렬을 txt 파일로 저장할 수 있다.
① 데이터프레임의 파일 저장
우선 mydata라는 데이터프레임을 다음과 같이 만들자.
> id=c(1,2,3,4,5)
> sex=c('남', '여', '남', '남', '여' )
> height=c(180, 160, 175, 170, 155)
> weight=c(85, 50, 65, 70, 44)
> mydata=data.frame(id, sex, height, weight) #데이터프레임 mydata 생성
> mydata
id sex height weight
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
이제 데이터프레임 mydata를 현재 작업자 디렉토리에 “mydata.txt”로 저장
> write.table(mydata, "mydata.txt", quote=FALSE, append=FALSE)
• quote = FALSE를 생략하거나 quote=TRUE를 사용하면 문자형 자료에 ""를 붙여 저장한다.
• append = TRUE를 사용하면 기존 파일 mydata.txt에 데이터가 추가된다.
② 데이터프레임 파일 읽기
저장된 데이터프레임은 함수 read.table()를 사용
> X=read.table("mydata.txt") #"mydata.txt"에 저장된 데이터프레임 불러옴.
> X
id sex height weight
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
<참고> 읽어 들일 파일이 현재 작업 폴더가 아니 다른 폴더에 저장되어 있는 경우 경로를 일일이 입력하는 것은 매우 불편하다. 이러한 경우 file.choose() 함수를 이용하면 편리하다. 이 함수는 탐색기 GUI 창을 불러와 마우스로 파일을 클릭할 수 있게 한다.
> X=read.table(file.choose(), header=TRUE)
옵션 header=TRUE는 자료의 첫 줄에 변수이름(열 이름)을 함께 읽어 들이라는 명령이다.
[2] read.table()
write.table()에 의해 저장된 데이터프레임 파일은 아무런 선택사항 없이 간단하게 read.table(“파일명”)으로 읽어 들일 수 있다. 그러나 외부에서 작성된 다양한 형태의 txt 외부 파일에 대해서는 좀 더 구체적인 선택사항들이 필요하다.
① 열 이름이 없는 경우
data.txt
1 남 180 85
2 여 160 50
3 남 175 65
4 남 170 70
5 여 155 44
read.table() 양식과 결과
> X=read.table("data.txt", header=FALSE)
> X
V1 V2 V3 V4
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
• 옵션 header=FALSE을 추가한다.
② 열 이름이 있으며, 3개 행만 읽을 때
data.txt
id X1 X2 X3
1 남 180 85
2 여 160 50
3 남 175 65
4 남 170 70
5 여 155 44
read.table() 양식과 결과
> X=read.table("data.txt", header=T, nrows=3)
> X
id X1 X2 X3
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
③ 1행의 주석을 읽고 싶지 않을 때
data.txt
#data.txt
id X1 X2 X3
1 남 180 85
2 여 160 50
3 남 175 65
4 남 170 70
5 여 155 44
read.table() 양식과 결과
> X=read.table("data.txt", header=T, skip=1)
> X
> id X1 X2 X3
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
④ 자료들이 콤마 “,”로 구분되어 있을 때
data.txt
id, sex, height, weight
1, 남, 180, 85
2, 여, 160, 50
3, 남, 175, 65
4, 남, 170, 70
5, 여, 155, 44
read.table() 양식과 결과
> X=read.table("mydata.txt", header=T, sep=",")
> X
id sex height weight
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
• 만약 자료들이 콤마로 구분되어 있으면, 옵션 sep=","를 추가한다. Tab으로 구분된 자료들에 대해서는 sep="\t"를 사용한다.
[3] scan() 함수의 사용
데이터프레임은 read.table()로 읽어 들이는 것이 보편적이지만, 다양한 형태로 입력할 때는 sacn() 함수를 사용하는 것이 좋다.
mydata.txt 저장
n, s, h, w
1, 남, 180, 85
2, 여, 160, 50
3, 남, 175, 65
4, 남, 170, 70
5, 여, 155, 44
> X=scan("mydata.txt", what="", skip=1, nlines=6, sep=',') #scan() 함수로 파일 읽기
Read 20 items
> X
[1] "1," "남," "180," "85" "2," "여," "160," "50" "3,"
[10] "남," "175," "65" "4," "남," "170," "70" "5," "여,"
[19] "155," "44"
• scan("파일") : 파일의 모든 구성요소를 원소로 하는 벡터로 읽는다.
• what="" : 구성원소를 문자형으로 읽는다. what=0은 수치자료로만 되어 있는 파 일을 읽을 때만 사용한다.
• skip=1: 첫 번째 행(열 이름)을 읽지 않는다.
• nlines=6: 6개 행을 읽는다.
• sep=',': 구분자를 콤마로 한다.
이제 벡터 X를 (왼쪽에서 오른쪽 순으로) 5×4 행렬 M으로 변환한 후 데이터프레임으로 변환한다.
> M=matrix(X, 5,4, byrow=T)
> M
[,1] [,2] [,3] [,4]
[1,] "1" " 남" " 180" " 85"
[2,] "2" " 여" " 160" " 50"
[3,] "3" " 남" " 175" " 65"
[4,] "4" " 남" " 170" " 70"
[5,] "5" " 여" " 155" " 44"
> mydata=as.data.frame(M)
> mydata
V1 V2 V3 V4
1 1 남 180 85
2 2 여 160 50
3 3 남 175 65
4 4 남 170 70
5 5 여 155 44
[4] write.csv()과 read.csv()
자료들은 txt 파일보다는 Exel의 CSV파일로 저장되어 있는 경우가 흔하다. write.csv()은 데이터프레임을 csv 파일로 저장하며, read.csv()은 csv 파일을 데이터프레임을 읽어 들이는데 사용된다.
2. save() 함수와 load() 함수
R에서 보통의 변수나 인자, 혹은 리스트, 데이터프레임 등 많은 객체들이 있는데, 모든 객체를 자료구조 그대로 저장하고 불러들이는 가장 쉬운 방법은 save()와 load()를 사용하는 것이다.
save() 함수는 우리가 알아볼 수 없는 형태로 저장
예로 리스트 L을 생성하고 “mylist”라는 파일명으로 저장
> id=c(1,2,3,4,5)
> sex=c('남', '여', '남', '남', '여' )
> height=c(180, 160, 175, 170, 155)
> weight=c(85, 50, 65, 70, 44)
> L=list(id, height, weight ) #리스트 L 생성
> save(L, file="mylist") #리스트 L을 파일 mylist로 저장
이때 리스트 이름 “L”과 그 자료들이 저장된다.
> load("mylist") #save된 파일은 load() 함수로 읽어 들인다.
> L #저장되었던 리스트 L을 그대로 사용할 수 있다.
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 180 160 175 170 155
[[3]]
[1] 85 50 65 70 44
save 되었던 파일을 로드하면, 저장되었던 객체를 그대로 사용할 수 있다.
> obj=load("mylist") #load() 함수로 읽어 객체를 obj에 저장한다.
> obj #obj에 저장된 객체 이름은 L 이다.
#이때 객체 L이 load 된다.
[1] "L"
> L
[[1]]
[1] 1 2 3 4 5
[[2]]
[1] 180 160 175 170 155
[[3]]
[1] 85 50 65 70 44
-추천-
기초 R 1
R 프로그램은 1995년 뉴질랜드의 Auckland 대학의 Robert Gentleman과 Ross Ihaka에 의해 개발되었다. 두 개발자의 이름의 머리글자를 이용하여 “R”로 명명된 것이다. R 프로그램은 배열 및 행렬로 표현된
dasoni1004.com
기초 R 2
1.벡터(vector) 자료 [1] c() 함수 이용 R에서 기본적인 방법은 함수 “c()”를 이용하는 것이다. 이 함수의 괄호 내에 자료를 나열함으로써 자료를 생성 c(자료 나열) > x=c(1, 3, 0.5, 5) #수치 자료 벡터 >
dasoni1004.com
'study > Rstudio' 카테고리의 다른 글
R 시각화 - 2(산점도 그래프) (0) | 2021.01.16 |
---|---|
R 시각화 - 1(시각화 함수) (0) | 2021.01.15 |
기초 R 3 (0) | 2021.01.12 |
기초 R 2 (0) | 2021.01.02 |
기초 R 1 (0) | 2021.01.01 |