2024. 10. 1. 16:11ㆍR분석
파일입출력
파일입출력은 r에서 쿼리문을 통해 파일을 작성하고 내보내는 것을 의미한다. 파일입력은 input이라고도 부르며, 기존에 작성된 파일을 r로 불러읽어들이는것을 말하고, 파일 출력은 output이라고도 부르며 기존 파일에 새로운 내용을 추가하거나 새로운 파일을 생성하는 것을 의미한다.
r에서 사용하는 파일 확장자 종류
- text파일 : .txt
- csv파일 : .csv
- excel파일 : .xlsx
절대경로와 상대경로
절대결오는 최상위 위치부터 내가 있는 (경로가 있는 파일명)위치까지 모두 작성하는 것을 말하며, 파일을 생성할때 파일명만 작성하는 경우, 현재 작성하고있는 r파일과 동일한 위치에 저장된다. 상대경로의 경우 현재 내 위치를 기준으로 이동하는 경로를 의미한다.
./ : 지금 내경로, 현재위치
../ : 상위폴더로 이동
을 의미한다.
TEXT파일 출력(파일생성)
#파일 입출력
#text파일 작성
#write.table(데이터, file='파일명')
stu.info <- data.frame(
ID=c(1,2,3),
name=c('둘리','도우너','또치'),
age=c(10,9,11)
)
print(stu.info)
#데이터프레임을 텍스트 파일로 작성하기
write.table(stu.info,file='stu.txt',quote=FALSE) #텍스트 확장자 txt
#quote=FALSE : 텍스트 파일에 있는 따옴표들이 제거됨
#파일 경로 따로 작성하지 않고 파일명만 작성하면 지금r이 있는 경로와 똑같은 위치에저장
텍스트 파일을 출력할때는 write.table(데이터, file=(경로, 파일명))의 형태로 작성하고, 파일을 출력하는 코드가 알맞게 작성되었다면 코드를 실행했을때 문제없이 스크립트 창에 코드가 실행된다. 이때 파일명만 작성할 경우 자동적으로 절대경로로 파일이 저장된다.
이때 상황에 따라 quote옵션등을 사용해도 된다. 주로 사용하는 옵션은 quote은 파일을 내보낼때 자동적으로 이렇게 따옴표가 생기는데 이것을 FALSE로 설정하면
이처럼 따옴표없이 파일이 저장된것을 확인할 수 있다. 또한, row.names은 행번호를 사용할것이냐는 의미로 FALSE로 하게되면 위와같이 자동적으로 행번호가 생성되지않고 생성한 데이터프레임 그대로 값이 들어간다.
절대경로 상대경로 확인 및 작성
절대경로를 확인하는 방법은 r스튜디오에서 getwd()를 입력하면 스크립트 창에 절대경로가 나타난다.
절대경로 사용하여 파일 작성하기
#절대경로 작성
#현재경로 확인
getwd()
write.table(stu.info,file='C:/Users/82109/Desktop/R분석/workspece/absolute.txt',
quote=FALSE, row.names=FALSE)
#row.names=FALSE : 행번호를 작성하지 않는다.
getwd()함수로 나의 절대경로를 확인한 다음 file=안에 작성해주면 되는데 이렇게 파일위치를 적을 경우 파일위치의 가장 마지막에 /슬래쉬를 작성하고 파일명을 적어 마무리한다. 보통 실무에서는 절대경로를 사용하는일은 거의 없으며 대부분 상대경로를 사용하는 편이다.
상대경로 사용하여 파일 작성하기
#상대경로 작성
write.table(stu.info,file='./day/relative.txt',quote=FALSE,row.names=FALSE)
#./ : 현재위치 -> getwd()의 경로와 동일
#../
write.table(stu.info,file='../memo/relative.txt',quote=FALSE, row.names=FALSE)
#../ : 상위 폴더로 이동, 파일 탐색기의 상위 폴더로 이동과 동일
상대경로를 사용하는 방법은 현재 위치를 의미하는 ./를 적은 후, 저장하고싶은 폴더가 있다면 폴더명을, 아니라면 바로 파일명을 적어 파일을 작성하면 된다. 여기서 내 위치에서 다른 위치로 이동하고 싶다면 ../를 이용하여 위치를 이동할 수 있는데 .점을 하나 더 적을 때마다 상위로 한칸씩 이동한다.
TEXT파일 입력(파일읽기)
#text파일 읽기
read_data <- read.table("./stu.txt",fileEncoding='utf-8',header=TRUE,nrow=2)
#nrow=2 : 몇개의 행을 가져올건지 설정하는것
#header = TRUE : 열제목 설정
read_data #총 3개의 행중에 2개만 가져옴
read.table('./day/relative.txt',fileEncoding='utf-8',header=TRUE,nrow=1)
read.table('./day/relative.txt',fileEncoding='utf-8',header=TRUE,nrow=2)
파일을 읽어올때는 read.table('경로, 파일명',fileEncoding='utf-8', 옵션)의 형태로 파일을 읽어온다. 한글일경우 인코딩을 꼭 적어텍스트 깨짐을 방지하는 거시 좋다. 이때 header를 TURE로 작성하면 열이름을 설정하겠다는 것이고 nrow의 경우에는 내보낸 파일의 행수 중에 가져올 개수를 선택하는 것이다.
csv파일 입출력
#csv파일 작성
write.csv(stu.info,"./day/stu.csv",fileEncoding='EUC-KR')
#csv파일 읽기
read.csv('./day/stu.csv',fileEncoding='EUC-KR',nrow=2)
#row.names
#파일을 쓸때는 TRUE, FALSE로 값을 주어 행번호 사용여부결정
#파일읽을때는 숫자로 값을 주어, 해당 번호의 열을 행이름으로 사용한다는 의미
csv파일의 경우 텍스트 파일을 입출력할때와 옵션, 사용방식모두 동일하지만 csv의 경우 파일 인코딩을 fileEncoding='EUC-KR'을 사용하며, 파일을 출력할때도,입력할때도 함께 작성해야하며 파일이 csv인 만큼 당연히 write.csv, read.csv를 사용한다.
EXCEL파일 출력(파일생성)
#엑셀파일 작성
#엑셀파일은 패키지를 다운받고 작성해야함
install.packages('writexl')
library(writexl) #라이브러리에 패키지 로드
write_xlsx(stu.info,path='./day/stu.xlsx')
엑셀의 경우, 다른 파일과는 다르게 패키지를 다운로드 받은 후에 작성할 수 있다. 먼저 intall.packages('writexl')이라는 패키지를 다운로드 받은 후에(빨간글자가 떠도 에러가 아님..!) 라이브러리에 로드해준후에 사용하면 된다.
write_xlsx(데이터,path=경로)의 형태로 작성하면 되는데 다른 파일들과는 다르게 언더바를 사용하며 file이 아닌path를 사용하여 파일을 내보낸다.
EXCEL파일 입력(파일읽기)
#엑셀파일 읽기
install.packages('readxl')
library(readxl)
read_excel('./day/stu.xlsx')
#엑셀파일 write일때는 xlsx확장명으로
#엑셀파일 read일때는 excel로
엑셀파일을 읽어올떄도 마찬가지로 readxl이라는 패키지를 다운로드 후 라이브러리에 로드한 다음에 파일을 읽어올 수 있다.
파일을 내보낼때는 wirte_xlsx을 사용했다면 읽어올때는 read_excel을 사용해야한다.
View()함수
#View()함수
#테이블의 형식으로 읽어온 파일을 보여줌
xl_data<- read_excel('./day/stu.xlsx')
View(xl_data)
read_c <- read.csv('./day/stu.csv',fileEncoding='EUC-KR')
View(read_c)
read_t <- read.table('./stu.txt',fileEncoding='utf-8')
View(read_t)
View함수는 이렇게 읽어온 파일을 테이블 형식으로 보여주는 함수이다. 원래 파일 자체가 테이블 형식인 csv와 엑셀말고도 텍스트파일에서도 사용가능하며, View()함수를 이용할때는 read코드문을 변수안에 저장하여 사용하는 방식을 주로 사용한다.
파일 입출력 실습
#===========파일 입출력 실습===========#
#좋아하는 밴드 정보가 담긴 데이터프레임 생성
band <- data.frame(
band_name=c('유다빈밴드','터치드'),
vocal=c('유다빈','윤민'),
song=c('항해','야경')
)
print(band)
#위의 데이터프레임을 day파일에 각각 파일형태로 저장하기
#text파일 생성
write.table(band,file='./day/band.txt',quote=FALSE,row.name=FALSE)
#text파일 읽기
r_band<- read.table('./day/band.txt',fileEncoding='utf-8',header=TRUE)
View(r_band)
#csv파일 생성
write.csv(band,'./day/band.csv',fileEncoding='EUC-KR',quote=FALSE,row.names=FALSE)
#csv파일 읽기
c_band<- read.csv('./day/band.csv',fileEncoding='EUC-KR',header=TRUE)
View(c_band)
#엑셀파일 생성
library(writexl)
write_xlsx(band,path='./day/band.xlsx')
#엑셀파일 읽기
e_band <- band<- read_excel('./day/band.xlsx')
View(e_band)
학습일기
오늘은 파일입출력하는 방법에 대해서 학습했는데 파이썬에서도 그렇고 r에서도 그렇고 이런 언어 프로그램에서 파일을 직접 입력하고 생성하고, 심지어 불러올 수 있다는것이 너무 신기했다. 실무에서는 직접 파일을 파일프로그램을 켜서 데이터를 적는것보다 그냥 바로 코드문으로 파일을 생성하는게 더 쉬울정도로작업하겠지..?? 싶은 생각이 들었다. 확장자명만 거의 다르고 비슷해서 내용이 크게 어렵지는 않았는데 아..엑셀...엑셀은 왜이렇게 미묘하게 다른점이 많은건지..심지어 같은 엑셀인데도 읽을때랑 내보낼때 사용하는 함수에도 차이가 있고...ㅠ항상 사용할때마다 라이브러리에 로드하는것도 잊지 말아야지..!
'R분석' 카테고리의 다른 글
R복습_stringr패키지와 함수(문자열 가공) (0) | 2024.10.05 |
---|---|
R복습_dplyr패키지(추출및 정렬함수,통계요약함수,샘플데이터추출함수) (0) | 2024.10.04 |
R복습_사용자 정의 함수(apply,sapply,함수 적용 활용) (0) | 2024.10.01 |
R복습_제어문의 종류 조건문,반복문,기타 제어문(if, while, for,이중for, break,next) (0) | 2024.09.30 |
R복습_데이터구조 데이터 프레임(생성, 인덱스,수정,결합,함수,실습) (0) | 2024.09.27 |