brunch

You can make anything
by writing

C.S.Lewis

by 이지섭 Jan 24. 2021

R 기초 - 외부데이터(excel,csv) 불러오기

외부에 있는 엑셀과 csv 파일 불러오기, 데이터를 csv파일로 저장하기

외부에 있는 엑셀파일을 어떻게 R에 불러올 수 있을까? 

엑셀파일을 읽기위한 패키지(함수)를 설치하면 된다. 명령어는 다음과 같다. 


install.packages("readxl")

library(readxl)


엑셀파일은 다음 명령어로 읽을 수 있다. 

read_excel("파일명.xlsx", sheet = 1, col_names = T)


위와 같은 내용이 입력된 엑셀파일을 읽어보자. 파일명은 df_midterm.xlsx이다.

df_midterm <- read_excel("df_midterm.xlsx", sheet = 1, col_names = T)

> df_midterm

# A tibble: 4 x 3

  science  math class

    <dbl> <dbl> <dbl>

1     100    80     1

2      90    60     1

3      20    40     2

4      70   100     2


#sheet 파라미터는 '엑셀의 몇 번 시트를 가져올지' 지정한다. 값은 1/2/3 혹은 "시트명"을 입력하면 된다.


#col_names 파라미터는 데이터를 불러올 때 '칼럼 이름까지 가져올 것인지'를 지정한다. T(TRUE)는 그대로 가져오는 것, yes라는 뜻이다. 만약 F(FALSE)로 쓰면 column의 이름은 순서대로 ...1, ...2, ...3, ...4, ...... 로 잡히고 원래의 변수들은 1행으로 잡혀 행(case)이 하나 더 늘어난다. 변수명이 없고 바로 데이터값이 들어가는 경우에는 F를 쓴다. 

  

col_names값이 F일 때는 어떻게 나오는지 비교해보자. 

df_midterm <- read_excel("df_midterm", sheet = 1, col_names = F)

  ...1    ...2  ...3 

  <chr>   <chr> <chr>

1 science math  class

2 100     80    1    

3 90      60    1    

4 20      40    2    

5 70      100   2    


column이름이 ...1, ...2, ...3으로 잡혔고 우리가 의도하는 column은 1행에 들어왔다. 이럴 경우 추가적인 전처리를 해줘야 한다. 


df_midterm.exam의 1column, 2column 평균을 구해보자. 


> mean(df_midterm$science)

[1] 70

> mean(df_midterm$math)

[1] 70



CSV파일이란?

CSV란 Comma Seperate Value의 준말로, 데이터가 콤마로 구분되며 어떤 툴에서든 읽히는 범용 데이터파일의 확장자다동일한 데이터 양이면 엑셀보다 CSV파일이 용량이 더 적고 R에서 불러일으키는 속도가 더 빠르다. 

 

엑셀과 달리 CSV를 읽을 때는 패키지를 설치하지 않아도 되며 R에 자체적 함수가 내장되어 있다. 

read.csv("csv_exam.csv", header= T)

CSV에는 시트라는 개념이 없기 때문에, sheet 파라미터를 쓰지 않는다. col_names 대신 header라는 파라미터를 쓰는데, 의미는 동일하다. 


csv_exam <- read.csv("csv_exam.csv", header = T)



데이터를 csv파일로 저장하려면?


write.csv(df_finalexam, file = "output_newdata.csv")

df_finalexam이라는 변수를 output_newdata라는 이름의 csv 파일로 프로젝트 폴더에 저장한다는 뜻이다.


매거진의 이전글 R 기초 - 데이터를 직접 만들어보자
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari