R로 데이터 가져오기: CSV, Excel, SPSS, Stata, SAS 파일 읽기

⚡ 스마트 요약

R에서 데이터 가져오기는 read.csv()를 사용한 CSV 파일 읽기, readxl을 사용한 Excel 통합 문서 읽기, haven을 사용한 SAS, STATA 또는 SPSS 파일 읽기를 다룹니다. 또한 이 가이드에서는 가져오기 시 시트, 행 및 셀 범위를 정확하게 선택하는 방법도 보여줍니다.

  • 📄 CSV 가져오기: `read.csv(file, header = TRUE, sep = “,”)`는 로컬 경로 또는 지정된 파일에서 쉼표로 구분된 파일을 불러옵니다. URL.
  • ⚠️ 버전 변경: R 4.0.0 버전부터는 stringsAsFactors의 기본값이 FALSE로 변경되었기 때문에 문자형 열은 문자형으로 유지됩니다.
  • 📗 엑셀 가져오기: readxl의 read_excel() 함수는 .xls와 .xlsx 파일 형식을 모두 처리하며, excel_sheets() 함수는 모든 워크시트를 먼저 나열합니다.
  • 🎯 정확한 선택: n_max는 행 수를 제한하고, range는 Excel 표기법을 사용하며, cell_rows() 또는 cell_cols()는 인덱스와 문자를 사용합니다.
  • 🔄 기타 소프트웨어: haven은 read_sas(), read_dta(), read_sav() 함수를 제공하며, 각 함수는 경로만 필요로 합니다. URL.
  • 🧹 깨끗한 입력: 가져오기 전에 결측값을 NA로 인코딩하고 열 이름에 공백이나 기호가 포함되지 않도록 하십시오.

R에서 데이터 가져오기

데이터는 다양한 형식으로 존재할 수 있습니다. 각 형식에 대해 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

특정 스프레드시트의 위치를 ​​확인하려면 스프레드시트 이름을 전달하세요.

readxl_example("geometry.xls")

Readxl_Example

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

읽을 셀을 두 가지 방법으로 제어할 수 있습니다.

  1. n 행을 반환하려면 n_max 인수를 사용하세요.
  2. 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)

Excel_시트

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_시트

인수 범위를 사용하여 스프레드시트에서 행과 열을 선택할 수도 있습니다. 아래 코드에서는 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가 됩니다.

Excel_시트

두 번째 예에서는 반환할 행 범위를 제어하는 ​​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개의 데이터 행이 반환됩니다.

Excel_시트

첫 번째 행에서 시작하지 않는 행을 가져오려면 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)

Excel_시트

엑셀에서처럼 알파벳으로 열을 선택할 수도 있습니다.

# 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` 함수를 사용하여 계산하세요.

  1. 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")

자주 묻는 질문

R 4.0.0 버전에서는 `stringsAsFactors`의 기본값이 `TRUE`에서 `FALSE`로 변경되었습니다. 이제 문자열 열은 문자열로 유지됩니다. 이전 R 버전에서도 동일하게 동작해야 하는 경우, 해당 인수를 명시적으로 전달하십시오.

교체 URL 전체 로컬 경로를 따옴표로 묶어 "C:/Users/name/data.csv"와 같이 입력합니다. 슬래시(/) 또는 이중 역슬래시(\)를 사용하십시오. Windows그리고 getwd() 함수를 사용하여 현재 작업 디렉토리를 확인하십시오.

readxl은 순수 R 언어로 .xls 및 .xlsx 파일을 읽습니다. Java 종속성입니다. 이전 버전의 xlsx 패키지만 필요합니다. Java r을 통해Java그렇기 때문에 readxl을 사용하는 것이 권장됩니다.

가져오기 과정에서 데이터 유형이 자동으로 변경되는 것은 재현 불가능한 AI 결과의 흔한 원인입니다. read_csv() 함수가 보고하는 것처럼 열 유형을 명시적으로 선언하면 학습 데이터 세트가 매번 동일하게 로드됩니다.

예. AI 어시스턴트는 오류 메시지에서 잘못된 구분자, 인코딩 문제, 헤더 오인식 등을 진단할 수 있습니다. 분석을 계속하기 전에 항상 str() 또는 glimpse() 함수를 사용하여 결과를 확인하십시오.

이 게시물을 요약하면 다음과 같습니다.