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()
라이브러리에서 사용 가능한 모든 스프레드시트를 보려면
Clippy.xls라는 스프레드시트의 위치를 확인하려면 다음을 사용하세요.
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에서 R은 X__1, X__2, X__3, X__4 및 X__5라는 XNUMX개의 새로운 변수를 생성했습니다.
인수 범위를 사용하여 스프레드시트에서 행과 열을 선택할 수도 있습니다. 아래 코드에서는 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입니다.
두 번째 예에서는 반환할 행 범위를 제어하는 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개 행을 반환합니다.
첫 번째 행에서 시작하지 않는 행을 가져오려면 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)
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를 반환합니다. 두 함수의 조합으로 누락된 값의 개수를 계산할 수 있습니다.
- 합
- 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") |