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

데이터는 다양한 형식으로 존재할 수 있습니다. 각 형식에 대해 R 특정 기능과 인수가 있습니다. 이 튜토리얼에서는 R로 데이터를 가져오는 방법을 설명합니다.

CSV 읽기

가장 널리 사용되는 데이터 저장소 중 하나는 .csv(쉼표로 구분된 값) 파일 형식입니다. R은 시작하는 동안 utils 패키지를 포함하여 일련의 라이브러리를 로드합니다. reading.csv() 함수와 결합된 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은 기본적으로 문자 값을 Factor로 반환합니다. stringsAsFactors = FALSE를 추가하여 이 설정을 끌 수 있습니다.

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의 클래스는 이제 문자입니다.

Excel 파일 읽기

뛰어나다 파일은 데이터 분석가들 사이에서 매우 인기가 있습니다. 스프레드시트는 작업하기 쉽고 유연합니다. 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

Clippy.xls라는 스프레드시트의 위치를 ​​확인하려면 다음을 사용하세요.

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에서 R은 X__1, X__2, X__3, X__4 및 X__5라는 XNUMX개의 새로운 변수를 생성했습니다.

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개의 행을 반환하는 것을 볼 수 있습니다. 데이터 세트에는 헤더가 있으므로 차원이 4×2입니다.

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는 4×5 행렬입니다. 붓꽃 데이터세트에는 헤더가 있는 5개의 열이 있습니다. 모든 열의 헤더가 포함된 처음 XNUMX개 행을 반환합니다.

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

We can select the columns with the letter, like in 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개의 행을 반환합니다. 이는 희미한() 함수로 확인됩니다.

read_excel()은 숫자 값이 없는 기호가 셀에 나타나면 NA를 반환합니다. 두 함수의 조합으로 누락된 값의 개수를 계산할 수 있습니다.

  1. is.na

다음은 코드입니다.

iris_na <-read_excel(example, na ="setosa")
sum(is.na(iris_na))

산출

## [1] 50

setosa 종에 속하는 행인 50개의 값이 누락되었습니다.

다른 통계 소프트웨어에서 데이터 가져오기

천국 패키지를 사용하여 다양한 파일 형식을 가져옵니다. 이 패키지 지원 SAS, STATA 및 SPSS 소프트웨어. 다음 함수를 사용하여 파일 확장자에 따라 다양한 유형의 데이터 세트를 열 수 있습니다.

  • SAS: read_sas()
  • STATA: read_dta() (또는 read_stata(), 이는 동일함)
  • SPSS: read_sav() 또는 read_por(). 확장자를 확인해야 합니다

이 함수에는 하나의 인수만 필요합니다. 파일이 저장된 PATH를 알아야 합니다. 이제 SAS, STATA 및 SPSS의 모든 파일을 열 준비가 되었습니다. 이 세 가지 함수는 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() 함수를 사용하여 SPSS 파일을 엽니다. 파일 확장자 “.sav”

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

데이터 가져오기 모범 사례

R에 데이터를 가져오고 싶을 때 다음 체크리스트를 구현하는 것이 유용합니다. 그러면 R에 데이터를 올바르게 가져오기가 쉬워질 것입니다.

  • 스프레드시트의 일반적인 형식은 첫 번째 행을 헤더(일반적으로 변수 이름)로 사용하는 것입니다.
  • 공백이 있는 데이터세트 이름을 지정하지 마세요. 별도의 변수로 해석될 수 있습니다. 또는 '_' 또는 '-'를 사용하는 것이 좋습니다.
  • 짧은 이름이 선호됩니다.
  • 이름에 기호를 포함하지 마십시오. 즉, exchange_rate_$_€가 올바르지 않습니다. 이름을 선호합니다: exchange_rate_dollar_euro
  • 누락된 값에는 NA를 사용하고, 그렇지 않으면 나중에 형식을 정리해야 합니다.

요약

다음 표는 R에서 다양한 유형의 파일을 가져오기 위해 사용할 함수를 요약한 것입니다. 열 1은 함수와 관련된 라이브러리를 나타냅니다. 마지막 열은 기본 인수를 나타냅니다.

도서관 목표 함수 기본 인수
유틸리티 CSV 파일 읽기 읽기.csv() 파일, 헤더 =,TRUE, sep = “,”
readxl 엑셀 파일 읽기 read_excel() 경로, 범위 = NULL, col_names = TRUE
항구 SAS 파일 읽기 읽기_사스() 통로
항구 STATA 파일 읽기 읽기_상태() 통로
항구 SPSS 채우기 읽기 읽기_저장() 통로

다음 표는 read_excel() 함수를 사용하여 선택 항목을 가져오는 다양한 방법을 보여줍니다.

함수 목표 인수
read_excel() n개 행 읽기 n_max = 10
Excel처럼 행과 열을 선택하세요. 범위 = “A1:D10”
인덱스가 있는 행 선택 범위= cell_rows(1:3)
문자가 있는 열 선택 범위 = cell_cols("A:C")