카테고리 없음

write read

23임규민 2023. 9. 27. 14:01

write_csv

일반적으로 tabular 데이터는 csv로 저장한다 ! 오늘은 익히 사용하는 write_csv, write_file, write_lines 함수에 대해 공부하고자 한다.

 

write_csv(x,path,
na="NA",
append=FALSE
col_names=!append)

첫 번째 줄의 path는 저장 위치와 파일명을 의미한다.

두 번째 줄의 na는 어떤 문자를 결측값으로 판단해야 하는지 고르는 기능을 갖는다.

세 번째 줄의 append는 파일을 덮어쓸지 기존 파일에 추가할지 결정하는 기능을 갖는다.

네 번째 줄의 col_names 는 head 삽입 여부를 판단하는 결정하는 기능을 갖는다.

 

설명을 위해  a 라는 dataframe 을 만들어보겠다.

a<-c(10,9,8)
b<-c(7,6,5)
c<-c(4,3,2)

a<-data.frame(a,b,c)
write_csv(a,"./test.csv",append=F)
write_csv(a,"./test.csv",append=F)

write_csv() 를 두 번 실행하여도, append가 F 이기 때문에 위에 한 번 실행한 것과 다름없는 결과를 얻게 된다.

 

만약에 append가 T라면? 두 번 실행된다.

 

write_csv(a,"./test.csv",append=T,col_names=T)
write_csv(a,"./test.csv",append=T,col_names=T)

그러나 다음과 같이 append와 col_names의 값이 모두 T라면?

->열의 이름과 데이터 모두 두 번씩 추가된다.

 

write_file은 줄바꿈 없이 바로 이어서 text를 기록한다.

write_lines는 줄바꿈 문자도 추가로 기록한다.

readxl

1. 패키지를 깔아보자

{r setup, eval = FALSE}
knitr::opts_chunk$set(echo = TRUE)

# Attach the tidyverse, readxl, writexl and here packages:
library(tidyverse)
library(readxl)
library(writexl)
library(here)

위 코드는 tidyverse, readxl, read_csv(), read_excel() 을 사용할 수 있게 해주는 코드이다.먼저, "setup" 이라는 이름의 청크에 대한 설정을 하고, 'eval=FALSE' 를 통해 해당 청크의 코드를 실행하지 않도록 지정한다.

이후 'knitr' 패키지를 통해 코드 청크에 대한 전역 옵션을 설정합니다. ('echo=TRUE') 는 코드와 결과값이 출력 문서에 출력함을 의미한다.

 

 

아래의 코드 read_excel() 은 xlsx 및 .xls 유형 모두에 작동한다.

birth_file<-read_excel(here("data","시군구_성_월별_출생_20230925202918.xlsx"))
birth_file

 

코드 작성 시 해당 파일에 대한 데이터가 출력된다.

 

가장 위의 행은  열 머리글이 된다.

 

read_excel()에서 range=인수를 사용하여 읽어올 셀의 범위를 지정할 수 있다.

 

ex) birth_file 의 (A:1Q10) 에서 (A1:H3) 만을 읽을 경우 다음과 같은 코드를 사용할 수 있다.

birth_file<-read_excel(here("data","시군구_성_월별_출생_20230925202918.xlsx", range="A1:H3")

 

그러나 이 경우 첫 번째 행이 자동으로 열 머리글이 된다는 특징이 있으므로, 범위 내의 모든 행을 유지하고, 고유한 열 이름을 추가하려면 다음과 같이 col_names=인수 를 사용해야한다.

birth_file<-read_excel(here("data","시군구_성_월별_출생_20230925202918.xlsx", range="A1:H3", col_names=c("구역","남자","여자","출생수")