티스토리 뷰
<요약>
파일 입력
read.csv() : 외부 csv 파일을 불러오고, 데이터 프레임 형식으로 저장
read.table() : 텍스트 파일을 불러오고, 데이터 프레임 형식으로 저장
scan() : 외부 텍스트 파일을 불러오고, 벡터 형식으로 저장
readline() : 사용자 입력 데이터 저장(사용자에게 메시지 전달 가능)
readLine() : 텍스트 파일을 한 줄씩 읽어 문자열 벡터로 저장
파일 출력
write.csv() : 데이터 프레임을 외부 csv 파일로 저장
객체 파일 입출력
save() : 메모리에 있는 객체를 파일에 저장
load() : 외부 파일로 객체를 메모리로 읽기
파일 입력
read.csv() : 외부 csv 파일을 불러오고, 데이터 프레임 형식으로 저장
read.csv(file, stringsAsFactors = FALSE)
csv 파일이란 텍스트 파일을 ,(콤마)로 구분한 파일을 의미합니다.
read.csv 함수는 header = TRUE, stringsAsFactors = TRUE 가 default로 설정되어있습니다.
read.csv라고 꼭 csv 파일만 불러올 수 있는게 아니고, sep 옵션을 주면 다른 파일도 불러올 수 있습니다.
# 권장 사용법
> x <- read.csv("read.csv", stringsAsFactors = FALSE)
> x <- read.csv("read.csv")
> x
id name price
1 1 iPhoneX 100
2 2 iPad 80
3 3 Airpods 20
4 4 Watch -
> str(x) # stringsAsFactors 옵션 생략 시, 문자열이 Factor로 저장됩니다.
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : Factor w/ 4 levels "Airpods","iPad",..: 3 2 1 4
$ price: Factor w/ 4 levels "-","100","20",..: 2 4 3 1
# stringsAsFactors : 문자열 컬럼을 팩터화 할 것인지 여부
# na.strings = "-" : 특정 문자를 NA 형식으로 저장. (중요!!!)
> x <- read.csv("read.csv", stringsAsFactors = FALSE, na.strings = "-")
> str(x)
'data.frame': 4 obs. of 3 variables:
$ id : int 1 2 3 4
$ name : chr "iPhoneX" "iPad" "Airpods" "Watch"
$ price: int 100 80 20 NA
# nrows 옵션 : 일부 데이터 로딩(대량의 데이터 로딩 시 일부의 데이터를 미리 로딩하여 형식 확인 가능)
> read.csv("emp.csv", nrows = 3)
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
1 7369 SMITH CLERK 7902 1980-12-17 0:00 800 NA 20
2 7499 ALLEN SALESMAN 7698 1981-02-20 0:00 1600 300 30
3 7521 WARD SALESMAN 7698 1982-02-22 0:00 1250 500 30
# skip = 0 : 일부 데이터 로딩 제외(첫번째 행이 설명인 경우)
read.csv("file2.txt", skip = 1) # 첫번째 행 제외
# encoding : 파일 인코딩 옵션(한글일 경우 cp949, R은 기본으로 cp949 적용)
read.csv("student.csv", stringsAsFactors = F, encoding = 'cp949')
# 참고
#1. stringsAsFactors = TRUE 로 파일을 불러들였을 경우, 펙터 변수를 문자열 변수로 변환하는 방법
x$name <- as.character(x$name)
#2. 불러온 파일의 헤더를 지정하는 방법(컬럼은 숫자가 올 수 없으므로 숫자 컬름은 앞에 X라는 접두어가 붙게 됩니다.)
names(x) <- c("id", "name", "price")
#3. names() 혹은 colnames() 로 컬럼 이름 추가, 변경 가능
> names(emp)
[1] "EMPNO" "ENAME" "JOB" "MGR" "HIREDATE" "SAL" "COMM" "DEPTNO"
> colnames(emp)
[1] "EMPNO" "ENAME" "JOB" "MGR" "HIREDATE" "SAL" "COMM" "DEPTNO"
read.table() : 텍스트 파일을 불러오고, 데이터 프레임 형식으로 저장
read.table(file,
header = FALSE, # 첫 번째 행을 헤더로 사용할 것인지 여부
sep = "" # read.csv 는 자동으로 ,(콤마)로 구분
row.names, col.names, # 행, 열 이름 설정. 데이터를 불러온 후 지정하는게 좋음
na.strings = "NA", # NA 처리를 하고자 하는 문자열 지정
nrows = -1, # 일부 데이터 로딩
skip = 0, # 일부 데이터 로딩 제외
stringsAsFactors = default.stringsAsFactors(), # 문자열 컬럼을 팩터화 할 것인지 여부
fileEncoding = "", encoding = "unknown") # 파일 인코딩
read.csv()함수와 다르게 header = F 가 default 로 설정되어있습니다.
# 권장 사용법
read.table("read.txt", sep = ",", header = T, stringsAsFactors = FALSE) # sep, header 옵션을 추가해야 read.csv와 같은 결과
# read.table()함수는 sep 옵션을 지정해주지 않으면 각 행을 하나의 값으로 읽습니다.
> read.table("file1.txt")
V1
1 A,B,C,D
2 1,2,3,4
3 5,6,7,8
4 4,2,8,-
5 3,?,6,2
> read.table("file1.txt", sep = ",")
V1 V2 V3 V4
1 A B C D
2 1 2 3 4
3 5 6 7 8
4 4 2 8 -
5 3 ? 6 2
# header 옵션: 첫 번째 행 컬럼화 여부
> read.table("file1.txt", sep = ",", header = TRUE)
A B C D
1 1 2 3 4
2 5 6 7 8
3 4 2 8 -
4 3 ? 6 2
# skip = n 옵션 사용 시 텍스트의 앞 n 줄을 건너 뛸 수 있습니다.
> read.table("file1.txt", header = T, skip = 2)
# nrows = n 옵션 사용 시, n 줄 만큼의 행만 읽을 수 있습니다.
> read.table("file1.txt", header = T, nrows = 2)
# na.strings = "" : NA 처리를 하고자 하는 문자열 지정
> t2 <- read.table("file1.txt", sep = ",", header = TRUE)
> t2
A B C D
..
3 4 2 8 -
4 3 ? 6 2
> t2 <- read.table("file1.txt", sep = ",", header = TRUE, na.strings = c("-","?"))
> t2
A B C D
..
3 4 2 8 NA
4 3 NA 6 2
# 참고
> disease <- read.csv('disease.txt', stringsAsFactors = F, sep = '', encoding = 'utf-8')
> disease <- read.table('disease.txt', stringsAsFactors = F, header = T)
> disease
월별 콜레라 장티푸스 이질 대장균 A형간염
1 1월 6 175 550 7 351
2 2월 5 165 253 9 535
3 3월 1 200 NA 13 1003
...
scan() : 외부 텍스트 파일을 불러오고, 벡터 형식으로 저장
> v1 <- scan("test.txt")
Read 6 items
> v1
[1] 111 222 333 444 555 666
> v2 <- scan() # 사용자가 입력한 숫자 값을 벡터로 저장
1: 11
2: 12
3: 13
4: # Enter 를 누르면 종료
Read 3 items
> v2
[1] 11 12 13
> v3 <- scan(what="") # 사용자가 입력한 문자 값을 벡터로 저장(문자 입력 시 what 옵션 필요)
1: Im
2: hungry
3: # Enter 를 누르면 종료
Read 2 items
> v3
[1] "Im" "hungry"
readline() : 사용자 입력 데이터 저장(사용자에게 메시지 전달 가능)
> answer <- readline("값을 입력하세요(Y or N)")
값을 입력하세요(Y or N) N
> answer
[1] "N"
> if( tolower(answer) == "y"){ # if문에 유용하게 사용 가능
+ print("I want !")
+ } else {
+ print("I don't want !")
+ }
[1] "I don't want !"
readLine() : 텍스트 파일을 한 줄씩 읽어 문자열 벡터로 저장
파일 출력
write.csv() : 데이터 프레임을 외부 csv 파일로 저장
R에서 작업한 데이터를 외부로 저장할 수 있습니다.
write.csv(데이터, file="파일명", row.names=행 포함 여부(default TRUE))
> write.csv(professor, file="test.csv")
객체 파일 입출력
save() : 메모리에 있는 객체를 파일에 저장
save(저장할 객체, file="파일명") # 모든 객체를 저장하고 싶을 때, list=ls()
save(list=ls(), file="storage.RData")
load() : 외부 파일로 객체를 메모리로 읽기
load("파일명")
load("storage.RData")
ls()
참고: KIC 캠퍼스 머신러닝기반의 빅데이터분석 양성과정
'R > Collection' 카테고리의 다른 글
[R] R, 패키지에 내장된(탑재된) 데이터셋 확인하기 (0) | 2019.01.05 |
---|---|
[R] 엑셀 파일 불러오기(읽기), 엑셀 파일 내보내기(저장) - xlsx (0) | 2019.01.03 |
[R] incomplete final line found on '파일 경로' (3) | 2019.01.03 |