R로 데이터 가져오기: CSV, Excel, SPSS, Stata, SAS 파일 읽기
⚡ 스마트 요약
R에서 데이터 가져오기는 read.csv()를 사용한 CSV 파일 읽기, readxl을 사용한 Excel 통합 문서 읽기, haven을 사용한 SAS, STATA 또는 SPSS 파일 읽기를 다룹니다. 또한 이 가이드에서는 가져오기 시 시트, 행 및 셀 범위를 정확하게 선택하는 방법도 보여줍니다.
데이터는 다양한 형식으로 존재할 수 있습니다. 각 형식에 대해 R 특정 기능과 인수가 있습니다. 이 튜토리얼에서는 R로 데이터를 가져오는 방법을 설명합니다.
CSV 파일 읽기
가장 널리 사용되는 데이터 형식은 .csv(쉼표로 구분된 값)입니다. R은 시작 시 utils 패키지를 포함한 여러 라이브러리를 로드합니다. 이 패키지는 CSV 파일을 여는 표준 방법인 read.csv() 함수를 제공합니다. 구문은 다음과 같습니다.
read.csv(file, header = TRUE, sep = ",")
논의:
- 파일: 파일이 저장된 PATH
- 머리글: 파일에 헤더가 있는지 확인합니다. 기본적으로 헤더는 TRUE로 설정되어 있습니다.
- 9월: 변수를 분할하는 데 사용되는 기호입니다. 기본적으로 `,`입니다.
데이터 파일 이름 mtcats를 읽어보겠습니다. csv 파일은 온라인에 저장됩니다. .csv 파일이 로컬에 저장된 경우 코드 조각 내부의 PATH를 바꿀 수 있습니다. ' ' 안에 넣는 것을 잊지 마세요. PATH는 문자열 값이어야 합니다.
Mac 사용자의 경우 다운로드 폴더 경로는 다음과 같습니다.
"/Users/USERNAME/Downloads/FILENAME.csv"
Windows 사용자의 경우:
"C:\Users\USERNAME\Downloads\FILENAME.csv"
항상 파일 이름의 확장자를 지정해야 합니다.
- .CSV
- . XLSX
- 이 .txt
- ...
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <- read.csv(PATH, header = TRUE, sep = ',') length(df)
출력:
## [1] 12
class(df$X)
출력:
## [1] "factor"
R 4.0.0 이전 버전에서는 read.csv() 함수가 모든 문자열 열을 팩터로 변환했기 때문에 위에서 class(df$X)가 "factor"를 반환하는 것입니다. stringsAsFactors = FALSE를 사용하면 이 기능을 비활성화할 수 있습니다.
⚠️ 버전 참고: 이후 R 4.0.0 기본값은 stringsAsFactors = FALSE이므로 문자열 열은 문자열로 유지되며, 최신 설치 환경에서는 첫 번째 예제가 "character"를 반환합니다. 아래와 같이 인수를 명시적으로 전달하면 모든 버전에서 동일한 결과를 얻을 수 있으며, 이것이 가장 안전한 방법입니다.
PATH <- 'https://raw.githubusercontent.com/guru99-edu/R-Programming/master/mtcars.csv' df <-read.csv(PATH, header =TRUE, sep = ',', stringsAsFactors =FALSE) class(df$X)
출력:
## [1] "character"
변수 X의 클래스는 이제 문자입니다.
read.csv()와 read_csv() 중 어떤 함수를 사용해야 할까요?
read.csv() 함수는 기본 R에 포함되어 있으며 별도의 패키지가 필요하지 않습니다. readr 패키지를 사용하면 read_csv() 함수를 추가할 수 있는데, 이 함수는 더 빠르고 사용자가 직접 처리하는 부분이 적습니다.
| 기준 | read.csv() (유틸리티) | read_csv() (readr) |
|---|---|---|
| 패키지 필요 | 없음 | 리더 |
| 대용량 파일 처리 속도 | 느린 | 몇 배 더 빠릅니다 |
| 반품 | 데이터 프레임 | 티끌 |
| 열 이름 | 공백이 점으로 변환됨 | 원문 그대로 유지함 |
| 유형 감지 | 조용한 | 컬럼 명세에 보고됨 |
library(readr) df <- read_csv(PATH) # For very large files, data.table::fread() is faster still library(data.table) df <- fread(PATH)
작은 파일이나 추가 패키지 없이 실행해야 하는 스크립트의 경우 read.csv() 함수를 사용하십시오. 파일 크기가 크거나 정확한 열 이름을 유지하는 것이 중요한 경우에는 read_csv() 함수를 사용하십시오.
엑셀 파일 읽기
뛰어나다 파일은 데이터 분석가들 사이에서 매우 인기가 있습니다. 스프레드시트는 작업하기 쉽고 유연합니다. R에는 Excel 스프레드시트를 가져올 수 있는 readxl 라이브러리가 장착되어 있습니다.
이 코드 사용
require(readxl)
readxl이 컴퓨터에 설치되어 있는지 확인하십시오. r-conda-essential을 사용하여 r을 설치하면 라이브러리가 이미 설치되어 있습니다. 명령 창에 다음이 표시되어야 합니다.
출력:
Loading required package: readxl.
해당 패키지가 설치되어 있지 않으면 conda를 사용하여 설치할 수 있습니다. 도서관 또는 터미널에서 conda install -c mittner r-readxl을 사용합니다.
다음 명령을 사용하여 라이브러리를 로드하여 Excel 파일을 가져옵니다.
library(readxl)
readxl_example()
이 튜토리얼에서는 readxl 패키지에 포함된 예제를 사용합니다.
코드를 사용하여
readxl_example()
라이브러리에서 사용 가능한 모든 스프레드시트를 보려면
특정 스프레드시트의 위치를 확인하려면 스프레드시트 이름을 전달하세요.
readxl_example("geometry.xls")
Conda와 함께 R을 설치하는 경우 스프레드시트는 Anaconda3/lib/R/library/readxl/extdata/filename.xls에 있습니다.
read_excel()
read_excel() 함수는 .xls 및 .xlsx 확장자를 모두 열고 자동으로 적절한 파서를 선택합니다.
구문은 다음과 같습니다.
read_excel(PATH, sheet = NULL, range= NULL, col_names = TRUE) arguments: -PATH: Path where the excel is located -sheet: Select the sheet to import. By default, all -range: Select the range to import. By default, all non-null cells -col_names: Select the columns to import. By default, all non-null columns
readxl 라이브러리에서 스프레드시트를 가져오고 첫 번째 시트의 열 수를 계산할 수 있습니다.
# Store the path of `datasets.xlsx` example <- readxl_example("datasets.xlsx") # Import the spreadsheet df <- read_excel(example) # Count the number of columns length(df)
출력:
## [1] 5
엑셀_시트()
Datasets.xlsx 파일은 4개의 시트로 구성됩니다. excel_sheets() 함수를 사용하여 통합 문서에서 사용 가능한 시트를 확인할 수 있습니다.
example <- readxl_example("datasets.xlsx")
excel_sheets(example)
출력:
[1] "iris" "mtcars" "chickwts" "quakes"
워크시트에 여러 시트가 포함된 경우 시트 인수를 사용하여 특정 시트를 쉽게 선택할 수 있습니다. 시트 이름이나 시트 인덱스를 지정할 수 있습니다. 두 함수가 동일()을 사용하여 동일한 출력을 반환하는지 확인할 수 있습니다.
example <- readxl_example("datasets.xlsx") quake <- read_excel(example, sheet = "quakes") quake_1 <-read_excel(example, sheet = 4) identical(quake, quake_1)
출력:
## [1] TRUE
읽을 셀을 두 가지 방법으로 제어할 수 있습니다.
- n 행을 반환하려면 n_max 인수를 사용하세요.
- cell_rows 또는 cell_cols와 결합된 범위 인수를 사용하세요.
예를 들어 처음 5개 행을 가져오려면 n_max를 XNUMX로 설정합니다.
# Read the first five row: with header iris <-read_excel(example, n_max =5, col_names =TRUE)
col_names를 FALSE로 변경하면 R은 자동으로 헤더를 생성합니다.
# Read the first five row: without header iris_no_header <-read_excel(example, n_max =5, col_names =FALSE)
iris_no_header
iris_no_header 데이터 프레임에서 readxl은 5개의 자리 표시자 이름을 생성했습니다. 이전 버전에서는 X__1부터 X__5까지 생성했지만, 현재 버전에서는 …1부터 …5까지 생성합니다.
인수 범위를 사용하여 스프레드시트에서 행과 열을 선택할 수도 있습니다. 아래 코드에서는 Excel 스타일을 사용하여 A1에서 B5까지의 범위를 선택합니다.
# Read rows A1 to B5 example_1 <-read_excel(example, range = "A1:B5", col_names =TRUE) dim(example_1)
출력:
## [1] 4 2
example_1은 4행 2열을 반환합니다. 범위 A1:B5는 스프레드시트의 5개 행을 포함하지만, 첫 번째 행은 헤더로 사용되므로 크기가 4x2가 됩니다.
두 번째 예에서는 반환할 행 범위를 제어하는 cell_rows() 함수를 사용합니다. 1~5행을 가져오려면 cell_rows(1:5)를 설정하면 됩니다. cell_rows(1:5)는 cell_rows(5:1)과 동일한 출력을 반환합니다.
# Read rows 1 to 5 example_2 <-read_excel(example, range =cell_rows(1:5),col_names =TRUE) dim(example_2)
출력:
## [1] 4 5
반면 example_2는 4x5입니다. cell_rows(1:5)는 다시 첫 번째 행을 헤더로 처리하므로 5개 열 전체에 걸쳐 4개의 데이터 행이 반환됩니다.
첫 번째 행에서 시작하지 않는 행을 가져오려면 col_names = FALSE를 포함해야 합니다. range = cell_rows(2:5)를 사용하면 데이터 프레임에 더 이상 헤더가 없다는 것이 분명해집니다.
iris_row_with_header <-read_excel(example, range =cell_rows(2:3), col_names=TRUE) iris_row_no_header <-read_excel(example, range =cell_rows(2:3),col_names =FALSE)
엑셀에서처럼 알파벳으로 열을 선택할 수도 있습니다.
# Select columns A and B col <- read_excel(example, range = cell_cols("A:B")) dim(col)
출력:
## [1] 150 2
참고: range = cell_cols(“A:B”)는 null이 아닌 값을 가진 모든 셀을 출력으로 반환합니다. 데이터 세트에는 150개의 행이 포함되어 있으므로 read_excel()은 최대 150개의 행을 반환합니다. 이는 희미한() 함수로 확인됩니다.
`na` 인수는 `read_excel` 함수에 어떤 값을 결측값으로 처리할지 알려줍니다. 해당 값들을 `sum` 함수와 `is.na` 함수를 사용하여 계산하세요.
- 합
- is.na
다음은 코드입니다.
iris_na <-read_excel(example, na ="setosa") sum(is.na(iris_na))
출력:
## [1] 50
setosa 종에 속하는 행인 50개의 값이 누락되었습니다.
다른 통계 소프트웨어에서 데이터 가져오기
다른 통계 패키지의 파일은 다음과 함께 가져옵니다. 항구 이 패키지는 다음을 지원합니다. SASSTATA와 SPSS를 비롯한 다양한 데이터셋 프로그램을 사용할 수 있습니다. 파일 확장자에 따라 다음 함수를 이용하여 여러 유형의 데이터셋을 열 수 있습니다.
- SAS: read_sas()
- STATA: read_dta() (또는 read_stata(), 이는 동일함)
- SPSS: read_sav() 또는 read_por(). 확장자를 확인해야 합니다
이러한 함수들은 각각 파일이 저장된 경로라는 하나의 인자만 필요로 하며, 각각은 다음과 같은 인수를 받습니다. URL 마치 동네 길처럼 쉽게 접근할 수 있습니다.
library(haven)
haven에는 conda r-essential이 포함되어 있지 않으면 다음으로 이동하세요. 링크 또는 터미널에서 conda install -c conda-forge r-haven을 실행하세요.
SAS 파일 읽기
이 예에서는 IDRE의 승인 데이터세트를 사용하겠습니다.
PATH_sas <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sas7bdat?raw=true' df <- read_sas(PATH_sas) head(df)
출력:
## # A tibble: 6 x 4 ## ADMIT GRE GPA RANK ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
STATA 파일 읽기
STATA 데이터 파일의 경우 read_dta()를 사용할 수 있습니다. 우리는 정확히 동일한 데이터 세트를 사용하지만 .dta 파일에 저장합니다.
PATH_stata <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.dta?raw=true' df <- read_dta(PATH_stata) head(df)
출력:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
SPSS 파일 읽기
read_sav() 함수는 .sav 확장자를 가진 SPSS 파일을 엽니다.
PATH_spss <- 'https://github.com/guru99-edu/R-Programming/blob/master/binary.sav?raw=true' df <- read_sav(PATH_spss) head(df)
출력:
## # A tibble: 6 x 4 ## admit gre gpa rank ## <dbl> <dbl> <dbl> <dbl> ## 1 0 380 3.61 3 ## 2 1 660 3.67 3 ## 3 1 800 4.00 1 ## 4 1 640 3.19 4 ## 5 0 520 2.93 4 ## 6 1 760 3.00 2
데이터 가져오기에 대한 최고의 사례
가져오기 전에 아래 체크리스트를 확인하면 나중에 필요한 정리 작업을 대부분 줄일 수 있습니다.
- 스프레드시트의 일반적인 형식은 첫 번째 행을 헤더(일반적으로 변수 이름)로 사용하는 것입니다.
- 파일 이름이나 열 이름에 공백을 사용하지 마십시오. 공백은 열 구분 기호로 인식될 수 있습니다. 공백 대신 밑줄(_)을 사용하십시오.
- 짧은 이름이 선호됩니다.
- 이름에 기호를 사용하지 마십시오. exchange_rate_$_€ 대신 exchange_rate_dollar_euro라고 작성하십시오.
- 결측값은 공백, 하이픈 또는 -99와 같은 특수 숫자 대신 NA로 인코딩해야 합니다. 그렇지 않으면 나중에 이러한 값을 수정해야 합니다.
R에서 데이터 가져오기: 함수 참조
아래 표는 각 파일 형식에 대한 가져오기 함수, 해당 함수를 제공하는 라이브러리 및 기본 인수를 나열합니다.
| 도서관 | 목표 | 함수 | 기본 인수 |
|---|---|---|---|
| 유틸리티 | CSV 파일 읽기 | 읽기.csv() | 파일, 헤더 = TRUE, 구분 = "," |
| readxl | 엑셀 파일 읽기 | read_excel() | 경로, 범위 = NULL, col_names = TRUE |
| 항구 | SAS 파일 읽기 | 읽기_사스() | 통로 |
| 항구 | STATA 파일 읽기 | read_dta() / read_stata() | 통로 |
| 항구 | SPSS 파일을 읽어보세요 | 읽기_저장() | 통로 |
두 번째 표는 read_excel() 함수를 사용하여 선택 영역을 가져오는 방법을 보여줍니다.
| 함수 | 목표 | 인수 |
|---|---|---|
| read_excel() | n개 행 읽기 | n_max = 10 |
| Excel처럼 행과 열을 선택하세요. | 범위 = “A1:D10” | |
| 인덱스가 있는 행 선택 | 범위= cell_rows(1:3) | |
| 문자가 있는 열 선택 | 범위 = cell_cols("A:C") |








