study blog

데이터 입출력 - txt, csv, xml, json, excel 본문

R/1. R 기초

데이터 입출력 - txt, csv, xml, json, excel

ivo_lee 2020. 1. 9. 16:31

# 키보드로 데이터 받기

scan() : 숫자 데이터를 받을 수 있음 (실수)

myNum <- scan() # vector 형태. 더 이상 입력하지 않으려면 Enter 한 번 더

scan()을 이용해서 문자열도 입력받을 수 있음 (default값은 실수. 문자열도 가능)

var1 = scan(what=character())

edit():  데이터프레임을 수정해서 입력하는 형태

var1 = data.frame()
df = edit(var1)

# 파일 읽어들이기 (txt, csv, xml, json, excel)

① text 파일 읽어들이기

text 파일에 ","로 구분된 데이터들을 읽어들여보자.

 - read.table() 이용

setwd(str_c(getwd(),"/data"))    # 파일 있는곳으로 경로 설정
student_midterm = read.table(file="student_midterm.txt",sep =",", fileEncoding="UTF-8")  #sep: 파일 데이터 구분자

#file에 header가 있는 경우
student_midterm = read.table(file="student_midterm.txt",sep =",",
                             fileEncoding="UTF-8",header=T)

 - choose() 이용: 파일 선택할 수 있음 → working directory 설정 안 해도 됨

student_midterm = read.table(file.choose(),sep =",",fileEncoding="UTF-8")

- 파일로부터 데이터를 읽어들일 때 일반 txt형식은 많이 사용되지 않음!
- 컴퓨터 간(프로그램 간)에 데이터를 주고 받으려고 한다
- 프로세스 간 데이터 통신을 하기 위해서 특정 형식을 이용해 데이터를 주고받음

 

② csv(comma seperated value):  comma 기호를 이용해서 데이터를 구분

예) "홍길동, 20, 서울, 김길동, 30, 부산, 최길동, 50, 인천, ..."

- csv 방식의 장점: 간단함. 부가적인 데이터 적음.   / 상대적으로 크기가 작음 → 많은 양의 데이터 처리 가능

- csv 방식의 단점: 구조적 데이터를 표현하기에 적합하지 않음.  ex) 중첩, 중첩된 데이터 표현 X

                           → parsing작업이 복잡(데이터를 프로그램에서 사용할 수 있게 변환하는 과정)

                           → 유지보수에 문제가 발생함.

read.table() # sep가 있어야 함
read.csv()   # sep가 ","이기 때문에 생략. header=T가 기본
df = read.csv(file.choose(), fileEncoding="UTF-8")

 

③ XML 방식:  tag를 이용해서 데이터를 표현하는 방식  - csv의 단점 해결

예)

<name>홍길동</name><age>20</age><address>서울</address> 

    <phone>

       <mobile>010-1111-2222</mobile>

       <home>02-342-0000</home>

    </phone>

 중첩구조 가능

- XML의 장점: 구조적 데이터를 표현하기에 적합. 사용하기 편리. 데이터의 의미 표현 가능

- XML의 단점: 부가적인 데이터 너무 큼

 

④ JSON (JavaScript Object Natation) - 구조적 데이터를 표현하면서 size 줄이자!

 예) {name: "홍길동", age: 20, adrress: 서울, ...}      # 앞의 값: key, 뒤의 값: value

- 구조적 표현이 가능하면서 xml보다 크기가 작음 -1,2의 장점 합친 것

 

⑤ excel

xlsx package 설치하고 로딩하기

install.packages("xlsx") 
library(xlsx)
student_midterm <- read.xlsx(file.choose(),
                             sheetIndex = 1,       # 첫번째 시트에서 가져온다
                             encoding = "UTF-8")

# 처리된 결과를 file에 write하기

① write.table() : data frame을 file에 저장 //read.table()은 파일을 데이터 프레임 형식으로 가져옴

write.table(student_midterm,
            file="C:/R_lecture/data/report.txt",
            row.names=F,   # 행번호 삭제
            quote =F,     # "" 삭제
            append=T)

② cat() : 분석결과(vector)를 file에 저장

cat("처리된 결과는:","\n","\n",             #\n: 줄바꿈
    file="C:/R_lecture/data/report.txt",   # 파일 없으면 새로 만듦
    append=T)                              # append=T 기존파일에 추가. append 없으면 파일 삭제하고 다시만듦   

③ capture.output() : 분석결과(List, table)을 file에 저장

capture.output(summary(student_midterm),
               file="C:/R_lecture/data/report.txt",
               append=T)

 

Comments