SW/R

R : 파일 데이터 읽고 쓰기 (개념 및 예제)

얇은생각 2019. 2. 5. 12:30
반응형

파일에 데이터 읽기

이번 시간에는 파일 읽어오는 방법에 대해 알아보겠습니다. 주로 Excel에서 .csv 포멧으로 저장된 것을 읽어옵니다. 이것을 읽어올때 read.csv() 함수를 활용합니다. 주디렉토리 구분자는 "\" 가 아닌 "/" 를 사용해야 합니다.


setwd("C:/Rworks") # 파일 소유 폴더 지정
mydata <- read.csv("test.csv", header = TRUE) # 읽을 파일 이름 지정
mydata # 데이터 출력

여기서 header는 파일의 첫줄은 데이터가 아닌 헤더부분인지를 나타내는 것입니다. 아래와 같이 헤더가 칼럼명이라면 TRUE로 지정해서 읽어오는 것입니다. 만약 모두 데이터라면 FALSE로 지정합니다.


파일1



mydata # 해당하는 자료 전체 보기
head(mydata) # 해당하는 자료 앞에 보기
tail(mydata) # 해당하는 자료 뒤에 보기

읽어온 데이터를 위와 같이 출력할 수 있습니다. 앞 부분만 출력할 때는 head() 함수를 활용하면 됩니다. 뒷부분만 출력할 때는 tail() 함수를 활용합니다. 데이터가 잘 읽어왔는지 확인할 때 용이하겠죠?



mydata[2,3] # 해당하는 원소 값 보기
nrow(mydata) # 해당하는 행의 개수 보기
ncol(mydata) # 해당하는 열의 개수 보기
dim(mydata) # 해당하는 각 행,열의 개수 보기

읽어 온 데이터는 동일하게 위와 같은 연산을 활용할 수 있습니다. 원하는 원소값 nrow, ncol, dim 등을 사용해서 출력이 가능합니다.



myRow1 <- mydata[2,] # 2행의 값들을 추출하여 벡터생성
myRow2 <- mydata[,3] # 3열의 값들을 추출하여 벡터생성

다음과 같이 행과 열에 해당하는 값들을 뽑아 올 수 도 있습니다.



파일에 데이터 쓰기

mynew <- mydata[,c(2,3)] # 각 해당하는 열 추출하기
write.csv(mynew, "kid_new.csv", row.names=F, quote=F) # 쓰고 싶은 파일명으로 쓰기

작업한 데이터를 파일에 쓰는 법은 위와 같습니다. 파일 저장 위치는 전에 설정한 setwd 경로에 저장이 됩니다. 쓰고 싶은 데이터를 변수에 저장합니다. 그후 write.csv() 함수를 활용합니다. 저장할 변수, 파일명을 저장합니다. row.names는 행의 이름을 같이 저장할 지의 여부를 지정하는 값입니다. quote는 문자열의 경우 ""를 붙여 저장할지 바로 저장할지를 지정하는 값입니다. 뛰어쓰기의 경우 상황에 따라 다른 값으로 인식하는 프로그램이 있기 때문입니다.



읽고 쓸 파일을 지정하는 여러 가지 방법

setwd("C:/Rworks") # 해당하는 파일에 폴더 지정하기
mydata <- read.csv("test.csv", header = TRUE) # 파일 읽어오기
mydata # 해당하는 데이터 보기

setwd를 활용하여 파일을 읽고 쓰는 방법을 주로 활용합니다. 하지만 이외에도 다른 방법이 존재합니다.



mydata <- read.csv("C:/Rworks/test.csv", # 직접적으로 경로 입력해서 가져오기
header = TRUE)

setwd 없이 직접 path 전체를 지정하여 파일을 읽거나 쓸 수 있습니다. 사용자가 본인에게 편한 방법을 활용하면 되겠죠?



mydata <- read.csv(file.choose(), #파일 탐색기 열기
header = TRUE)

파일 탐색기 등으로 찾아서 읽어오는 방법입니다. 이 함수를 활용하면 탐색기 창이 뜨고 원하는 파일을 찾아서 지정해주면 됩니다.



read.csv 실행시 한글 깨짐 해결 방법

Rsudio 한글 옵션 설정을 UTF-8로 변경해줍니다. 메뉴에서 Tools -> Global Option 을 눌러줍니다.



파일3

위와 같이 들어가 UTF-8로 변경하여 저장하면 대부분이 해결됩니다.



파일2

Excel에서 파일을 읽은후에 다시 저장을 할 때도 마찬가지입니다. 다른이름으로 저장을 하여 파일 포멧을 .cvs(UTF-8)로 저장합니다.



setwd("C:/Rworks") # 해당하는 파일이 있는 폴더 지정
mydata <- read.csv("test.csv", header = TRUE, encoding="utf-8") #직접 인코딩

그래도 잘 안되는 경우가 있습니다. R에서 파일을 읽을 때 encoding 옵션을 추가합니다. 읽으려는 파일의 한글 인코딩 방법을 코드에서 직접 입력하는 것입니다. utf-8의 방법도 있지만 euc-kr 방법도 있으니 참고해주세요.

반응형