분석할 데이터를 준비하는 과정을 데이터 수집이라고 합니다. 데이터는 어떻게 준비해야 할까요?

가장 기본적으로는 직접 데이터를 입력하거나 외부에서 생성한 데이터를 찾아서 불러오는 방법이 있고, 좀 더 전문적으로는 서버에서 데이터를 호출하는 방법이 있습니다.

벡터나 데이터 프레임을 R에 함수로 입력하는 방법이 데이터를 직접 생성하는 것이라면 외부 데이터를 가져오는 방법은 *.txt, *.csv, *.xlsx, *.xml, *.json 등과 같이 이미 만들어져 있는 데이터 파일을 가져오는 방법입니다오늘은 R 스튜디오에서 외부 데이터 파일을 가져오는 방법에 대해 알아보겠습니다.

 

✍️ 표로 정리하는 핵심 함수

함수 기능
read.table() TXT 파일을 가져옵니다.
read.csv() CSV 파일을 가져옵니다.
read_excel() readxl 패키지 엑셀 파일을 가져옵니다.
xmlToDataFrame() XML 패키지 XML 파일을 가져옵니다.
fromJSON() jsonlite 패키지 JSON 파일을 가져옵니다.

 

 

 


 

📑외부 데이터 가져오기: TXT 파일

 

TXT 파일은 read.table ( ) 함수를 사용하여 데이터 프레임으로 가져올 수 있습니다. read.table ( ) 함수 사용 형식은 다음과 같습니다.

read.table(“원시 데이터“, header = FALSE, skip = 0, nrows = -1, sep = “”, … )

 

 

함수에 원시 데이터 파일 경로를 넣어주고, 필요하다면 옵션을 지정합니다. 옵션을 지정하면 원시 데이터를 원하는 데이터 프레임 형태로 가져올 수 있습니다. 아래는 read.table ( ) 함수에서 자주 사용 하는 옵션입니다.

  • header: 원시 데이터의 1행이 변수명인지 아닌지 판단합니다.
  • skip: 특정 행까지 제외하고 데이터를 가져옵니다.
  • nrows: 특정 행까지 데이터를 가져옵니다.
  • sep: 데이터의 구분 문자를 지정합니다.

 

 

read.table ( ) 함수 사용법을 살펴보겠습니다. 가져올 파일은 data_ex.txt 파일입니다. 파일을 메모장 프로그램에서 먼저 실행해보면 각 열이 탭으로 구분되어 있고, 첫 번째 행은 변수명인 것을 알 수 있습니다. 이 원시 데이터를 변수 ex_data에 저장하여 데이터 프레임으로 가져옵니다.

외부 데이터 가져오기: TXT 파일

 

 

✅TXT 파일 가져오기

ex_data <- read.table(“C:/Rstudy/data_ex.txt”, encoding = “EUC-KR”, fileEncoding = “UTF-8”)
View(ex_data)

 

r스튜디오에서 txt 파일 가져오기

데이터 뷰어에서 가져온 데이터를 확인할 수 있습니다. 원시 데이터를 데이터 프레임으로 가져오면 테이블 첫 번째 행에는 변수명이 지정되고 그 아래로는 값을 가져옵니다. 여기에서 눈여겨볼 점은 테이블 1행입니다. 우리는 원시 데이터에서 1행이 변수명인 것을 확인했습니다.

 

그러나 데이터를 가져 오면서 원시 데이터의 변수명이 값이 되고 테이블 첫 번째 행에는 임의의 변수명이 삽입되었습니다. 이럴 때는 read.table() 함수의 header 옵션을 사용하여 원시 데이터에 변수명이 있음을 지정해 주어야 합니다.

 

 

🙋‍♂️여기서 잠깐) encoding과 fileEncoding 옵션

Windows 환경에서 실습할 때 한글이 있는 데이터를 가져오면 데이터의 한글이 제대로 표시되지 않는 문제가 발생할 수 있습니다.
Windows는 인코딩을 CP949 혹은 EUC-KR을 사용하기 때문에 인코딩이 UTF-8인 파일을 가져올 때 발생 하는 문제입니다. 이럴 때는 함수에 encoding과 fileEncoding 옵션을 설정해 줍니다. encoding 옵션은 R의 인코딩 설정, fileEncoding은 파일의 인코딩 설정입니다.

 

 

 


 

🔹header 옵션

header 옵션은 원시 데이터 1행이 변수명인지 아닌지 판단하는 옵션입니다.
header = TRUE 옵션을 추가하여 원시 데이터 1행이 변수명임을 지정하고 ex_data1로 저장해 보겠습니다.
 
 

✅변수명 지정하기

ex_data1 <- read.tabl1e.(“C:/Rstudy/data_ex.txt”, encoding =2″.EUC-KR”, fileEncoding = “UTF-8”, header = TRUE)
View(ex_data1)

 
 
header option_변수명 지정하기

 

이처럼 header = TRUE 옵션을 추가하면 원시 데이터의 1행이 변수명으로 지정됩니다. 따라서 테 이블의 변수명으로는 ID, SEX, AGE, AREA를 가져오고 그 아래로는 원시 데이터의 값을 가져온 것을알수있습니다.

 

만약 원시 데이터에 ID, SEX, AGE, AREA와 같이 변수명으로 사용할 행이 없다면 col.names 옵션을 사용합니다. col.names 옵션은 원시 데이터에 변수명이 없더라도 데이터 프레임에 변수명 을 부여할 수 있습니다.

 

✅변수명으로 사용할 행이 없을 때

varname <- c(“ID”, “SEX”, “AGE”, “AREA”)
ex1_data <- read.table(“C:/Rstudy/data_ex_col.txt”, encoding = “EUC-KR”, fileEncoding = “UTF-8”, col.names = varname)
View(ex1_data)

 
 
col.names 옵션

위 코드처럼 col.names 옵션은 변수명으로 사용할 값을 지정할 수 있습니다. 만약 행 이름을 부여 하고 싶다면 row.names 옵션을 사용하면 됩니다.

 
 
 

 

🔹skip 옵션

 

skip 옵션은 데이터 전체가 아니라 옵션에 지정한 특정 행까지 제외하고 그 이후 행부터 가져옵니다. 데이터를 두 줄 건너뛰고 가져와 변수 ex_data2로 저장해 보겠습니다.

skip 옵션 실행 전
 
 

✅행 스킵하여 가져오기

ex_data2 <- read.table("C:/Rstudy/data_ex.txt", encoding = "EUC-KR", fileEncoding = "UTF-8", header = TRUE, skip = 2)
View(ex_data2)
 

skip 옵션

header = TRUE 옵션을 사용하여 원시 데이터 1행을 변수명으로 지정하고 skip = 2 옵션을 추가 하여 원시 데이터 2행까지를 제외했더니, 변수명인 1행을 제외하고 나머지 행 중 두 개 행을 건너뛴 3행 데이터부터 불러온 것을 알 수 있습니다.

 
 
 

 

🔹nrows 옵션

 

nrows 옵션은 몇 개의 행을 불러올지 지정할 수 있습니다. 불러올 행 개수를 7개로 지정한 후 변수 ex_data3으로 저장해 보겠습니다.

 

✅행 개수 지정하여 가져오기

ex_data3 <- read.table("C:/Rstudy/data_ex.txt", encoding = "EUC-KR", fileEncoding = "UTF-8", header = TRUE, nrows = 7)
View(ex_data3)
 
nrows 옵션

header = TRUE 옵션을 사용하여 1행을 변수명으로 지정하고. 그 이후로 1행부터 7행까지 원시 데이터를 가져온 것을 알 수 있습니다.

 
 
 

 

🔹sep 옵션

 

sep 옵션은 데이터 구분자를 지정하는 옵션입니다. 앞서 실습한 data_ex.txt 데이터는 값 구분이 TAB 으로 되어 있었기 때문에 옵션 설정 없이 가져올 수 있었습니다. 만약 쉼표(,)로 구분되어 있다면 어떨까요? 다음 이미지와 같이 쉼표(,)로 값이 구분된 data_ex1.txt 데이터를 가져오겠습니다.

sep 옵션

 

sep 옵션은 원시 데이터의 데이터 구분자에 따라 옵션을 설정합니다. 구분자가 쉼표(,)이므로 sep 옵션을 sep = “,”로 지정합니다.

✅데이터 구분자 지정하여 가져오기

ex_data4 <- read.table("C:/Rstudy/data_ex1.txt", encoding = "EUC-KR", fileEncoding = "UTF-8", header = TRUE, sep = ",")
View(ex_data4)
 
sep 옵션 실행 후

쉼표(,)를 기준으로 열을 구분하여 데이터 프레임으로 가져온 것을 확인할 수 있습니다.

 

 

 


 

📑외부 데이터 가져오기: CSV 파일

 

CSV 파일은 *.csv 확장자를 가진 파일로 쉼표(,)를 이용해 열을 구분하는 데이터 입니다. CSV 파일을 가져올 때는 read.csv ( ) 함수를 사용하며 read.table ( ) 함수와 사용법이 비슷합니다.

read.csv(“원시 데이터“)

 

 

data_ex.csv 파일을 메모장으로 열어보면 다음 이미지와 같습니다. 아래의 data_ex.csv 파일을 R 로 가져옵니다.

✅CSV 파일 가져오기

ex_data <-read.csv(“C:/Rstudy/data_ex.csv”)
View(ex_data)

r studio csv 파일 가져오기

read.csv() 함수는 따로 옵션을 설정하지 않아도 원시 데이터의 1행을 변수명으로 가져옵니다. 만 약 값이 비어 있다면 임의로 지정됩니다.

 

 

 


 

📑외부 데이터 가져오기: XLSX 엑셀 파일(★★★)

 

엑셀 파일은 외부 데이터 중 원시 데이터로 가장 많이 활용하는 파일입니다. 엑셀 프로그램 자체로도 충분히 훌륭한 통계 프로그램이므로 프로그램 자체에서 엑셀 데이터를 활용해도 되지만, R 환경으로 가져오면 데이터 분석에 사용하기 좋은 데이터 세트가 됩니다. 엑셀 파일은 read_excel() 함수로 가져옵니다.

read_excel(“원시 데이터“)

 

 

앞에서 사용한 다른 함수와 달리 read_excel() 함수는 readxl 패키지에 있는 함수입니다. 데이터 를 가져오기 전에 먼저 패키지를 설치하고 로드합니다.

✅readxl 패키지 설치 및 로드하기

install.packages(‘readxl’)
library(readxl)

 

🙋‍♂️여기서 잠깐) 패키지는 어떻게 설치하나요?

 

 

readxl 패키지 설치와 로드가 완료되면 data_ex.xlsx 파일을 데이터 프레임으로 가져옵니다

✅엑셀 파일 가져오기

excel_data_ex <- read_excel("C:/Rstudy/data_ex.xlsx")
View(excel_data_ex)

 

r studio에서 엑셀 파일 가져오기

엑셀 형식과 비슷한 형태로 데이터 프레임이 생성됩니다. 테이블 모양이 엑셀과 비슷해 보이지만, 원 시 데이터와 달리 변수명이 확실하게 구분되어 있고, 변수명이 있는 행에 필터가 있어 변수별로 데이 터 정렬을 원하는 대로 설정 할 수 있습니다.

 

 

🙋‍♂️여기서 잠깐) 엑셀 파일에 시트 탭이 여러 개일 때는 어떻게 하나요?

read_excel() 함수는 기본값으로 첫 번째 시트 탭의 데이터를 가져옵니다. 만약 시트 탭이 여러 개여서 첫 번째 외의 다른 탭 시트 데이터를 가져오려면 sheet 옵션을 사용합니다. sheet 옵션에는 가져올 시트가 몇 번째인지 위치를 입력합니다. sheet = 2를 지정하면 두 번째 시트 데이터를 가져옵니다

read_excel(“C:/Rstudy/data_ex.xlsx”, sheet = 2)

 

 

 


 

📑외부 데이터 가져오기: XML 파일(★)

 

xml 파일 가져오기

 

XML(eXtensible Markup Language)파일은 HTML과 비슷하지만 데이터를 보여주는 것이 아닌 저장하고 전달하는 목적으로 만들어진 형식입니다. HTML처럼 태그가 미리 정의되어 있지 않고 태그를 사용자가 직접 정의합니다.

XML 파일은 HTML 태그처럼 < > 괄호로 이루어져있습니다.
예를 들어 <AGE>50</AGE>와 같이 사용자가 임의 지정한 태그 안에 데이터 내용 이 들어있는 것이 특징입니다.
XML 파일을 가져오는 많은 방법들이 있지만, XML 파일을 데이터 프레임으로 변환하는 xmlToDataFrame ( ) 함수를 가장 많이 사용합니다.

 

xmlToDataFrame(“원시 데이터“)

 

 

 

 

그럼 data_ex.xml 파일을 가져오겠습니다.
xmlToDataFrame ( ) 함수 는 XML 패키지에 있습니다. 함수를 사용하려면 먼저 XML 패키지를 설치하고 로드합니다.

✅XML 패키지 설치 및 로드하기

install.packages(“XML”)
library(XML)

 

 

xmlToDataFrame ( ) 함수로 xml 파일을 가져옵니다.

✅XML 파일 가져오기

xml_data <- xmlToDataFrame("C:/Rstudy/data_ex.xml")
View(xml_data)

 

r 스튜디오에서 xml 파일 가져오기

XML 파일의 < > 괄호 안에 있는 태그 이름은 변수명으로, 태그 안에 있는 값은 데이터로 데이터 프레임에 저장됩니다.

 

 

 


 

📑외부 데이터 가져오기: JSON 파일(★)

 

JSON(JavaScript Object Notation)파일도 데이터를 전달하는 목적으로 만들어진 파일 형식입니다. 서버-클라이언트 통신 간 데이터를 받아 객체나 변수에 할당해서 사용할 때 많이 사용하며, XML 파일보다 구문이 짧고 속도가 빨라 실무에서 흔히 사용합니다.

 

JSON 파일은 데이터 안에 다시 데이터가 정의된 중첩 데이터(nested data) 구조로 이루어져있습니다. 아래 예시를 살펴보면 속성(특기) – 값(농구, 도술)처럼 데이터 속성과 값이 쌍으로 이루어진 것이 특징입니다.

json 파일의 특징

 

data_ex.json 파일을 가져오겠습니다. JSON 파일을 가져오는 함수는 fromJSON ( ) 함수입니다.

fromJSON(“원시 데이터“)

 

 

fromJSON ( ) 함수는 jsonlite 패키지에 있습니다. 패키지를 설치하고 로드합니다.

✅jsonlite 패키지 설치 및 로드하기

install.packages("jsonlite")
library(jsonlite)

 

 

fromJSON ( ) 함수로 JSON 파일을 가져옵니다. 여기서 알아둘 점은 fromJSON ( ) 함수는 JSON 파일을 데이터 프레임으로 가져오는 함수가 아닙니다. 따라서 실행 결과는 View() 함수가 아닌 str ( ) 함수로 데이터 구조를 살펴봅니다.

✅JSON 파일 가져오기

json_data <- fromJSON(“C:/Rstudy/data_ex.json”)
str(json_data)

 

> 실행 결과

List of 7
    $이름 : chr “홍길동”
    $나이 : int 25
    $성별 : chr “여”
    $주소 : chr “서울특별시 양천구 목동” $특기 : chr [1:2] “농구” “도술”
    $ 가족관계:List of 3
        ..$ # : int 2
        ..$ 아버지: chr “홍판서”
        ..$ 어머니: chr “춘섬”
    $ 회사 : chr “경기 수원시 팔달구 우만동”

 

List of 7을 JSON 파일을 리스트 형식으로 가져왔다는 의미이며 7개의 속성으로 구성되었다는 것을 알 수 있습니다.

 

 

 


 

데이터 수집은 사용자가 직접 데이터를 입력하거나 외부에 있는 데이터를 불러오는 데이터 분석의 가장 첫 단계입니다.
위의 내용이 잘 이해가 되었는지 외부 데이터를 가져오는 함수를 파일 형식에 맞게 연결해 보세요!

  1. read.table ( )               •         • data.csv
  2. read.csv()                    •          • data.xlsx
  3. read_excel ( )              •          • data.json
  4. xmlToDataFrame ( )    •          • data.xml
  5. fromJSON ( )               •         • data.txt

 

혼자 공부하는 R 데이터 분석

위 내용은 『혼자 공부하는 R 데이터 분석』의 일부분을 재구성하여 작성하였습니다.

프로그래밍도 통계도 처음 배우는 입문자가 R언어로 데이터 분석을 할 수 있도록 만들어진 책 입니다. 데이터 분석에 관심이 있거나 R 언어로 데이터 분석을 시작하고 싶다면『혼자 공부하는 R 데이터 분석』으로 지금 시작해 보세요!

👀 도서 자세히 보기

👨‍💻유튜브 강의로 더 자세히 알기
🙋‍♂️강전희&엄동란 저자님께 질문하기