참고 링크

(https://data-make.tistory.com/47)

(https://ordo.tistory.com/13)

(https://haven.tidyverse.org/reference/read_dta.html)

\(~\)

1. 워킹디렉토리 확인과 설정

1-1. 확인하기

getwd()
## [1] "C:/Users/distr/OneDrive/R FILE"

1-2. 경로 저장하기

setwd("C:/Users/distr/OneDrive/R FILE/r_Intro")

본 예제에서는 GSS 2018 데이터를 사용할 것임.

(https://gss.norc.org/get-the-data/spss) 에서 다운로드 가능함.

\(~\)


2. 파일 변환하기

GSS 데이터를 포함하여 많은 secondary data는 sav(SPSS), dta(STATA), sas(SAS) 형태로 제공됨.

따라서 가장 호환성이 뛰어난 csv 파일로 변환할 필요가 있음.

\(~\)

2-1. 다양한 종류의 자료 읽기_방법1: haven 패키지:: read_sav, read_dta, read_sas …

중요 haven 패키지는 tibble 형태로 불러옴

먼저 read_sav()를 활용하여 자료를 불러온 뒤 gss_2018_1이라는 객체로 저장해보자

gss_2018_1 <- read_sav("C:/Users/distr/OneDrive/R FILE/r_Intro/GSS2018.sav") #sav file 불러오기

불러온 뒤에는 잘 들어왔나 확인하기: head(), dim(), names(), View() …

head(gss_2018_1, n = 7) #데이터 위에만 7줄까지 보여달라
## # A tibble: 7 x 1,065
##       ABANY ABDEFECT ABFELEGL ABHELP1 ABHELP2 ABHELP3 ABHELP4   ABHLTH  ABINSPAY
##   <dbl+lbl> <dbl+lb> <dbl+lb> <dbl+l> <dbl+l> <dbl+l> <dbl+l> <dbl+lb> <dbl+lbl>
## 1   2 [NO]   1 [YES] NA       1 [Yes] 1 [Yes] 1 [Yes] 1 [Yes]  1 [YES] 1 [Peopl~
## 2   1 [YES]  1 [YES]  3 [It ~ 2 [No]  2 [No]  2 [No]  2 [No]   1 [YES] 2 [Peopl~
## 3  NA       NA       NA       1 [Yes] 2 [No]  1 [Yes] 1 [Yes] NA       2 [Peopl~
## 4  NA       NA        1 [Sho~ 1 [Yes] 1 [Yes] 1 [Yes] 1 [Yes] NA       1 [Peopl~
## 5   2 [NO]   1 [YES] NA       2 [No]  2 [No]  2 [No]  1 [Yes]  1 [YES] 2 [Peopl~
## 6   1 [YES]  1 [YES]  1 [Sho~ 1 [Yes] 1 [Yes] 1 [Yes] 1 [Yes]  1 [YES] 1 [Peopl~
## 7   1 [YES]  1 [YES]  3 [It ~ 1 [Yes] 2 [No]  1 [Yes] 1 [Yes]  1 [YES] 1 [Peopl~
## # ... with 1,056 more variables: ABMEDGOV1 <dbl+lbl>, ABMEDGOV2 <dbl+lbl>,
## #   ABMELEGL <dbl+lbl>, ABMORAL <dbl+lbl>, ABNOMORE <dbl+lbl>,
## #   ABPOOR <dbl+lbl>, ABPOORW <dbl+lbl>, ABRAPE <dbl+lbl>, ABSINGLE <dbl+lbl>,
## #   ABSTATE1 <dbl+lbl>, ABSTATE2 <dbl+lbl>, ACQNTSEX <dbl+lbl>,
## #   ACTSSOC <dbl+lbl>, ADMINCONSENT <dbl+lbl>, ADULTS <dbl+lbl>,
## #   ADVFRONT <dbl+lbl>, AFFRMACT <dbl+lbl>, AFRAIDOF <dbl+lbl>,
## #   AFTERLIF <dbl+lbl>, AGE <dbl+lbl>, AGED <dbl+lbl>, AGEKDBRN <dbl+lbl>,
## #   ANCESTRS <dbl+lbl>, ARTHRTIS <dbl+lbl>, ASTROLGY <dbl+lbl>,
## #   ASTROSCI <dbl+lbl>, ATHEISTS <dbl+lbl>, ATTEND <dbl+lbl>,
## #   ATTEND12 <dbl+lbl>, ATTENDMA <dbl+lbl>, ATTENDPA <dbl+lbl>,
## #   AWAY1 <dbl+lbl>, AWAY11 <dbl+lbl>, AWAY2 <dbl+lbl>, AWAY3 <dbl+lbl>,
## #   AWAY4 <dbl+lbl>, AWAY5 <dbl+lbl>, AWAY6 <dbl+lbl>, AWAY7 <dbl+lbl>,
## #   BABIES <dbl+lbl>, BACKPAIN <dbl+lbl>, BALLOT <dbl+lbl>, BALNEG <dbl+lbl>,
## #   BALPOS <dbl+lbl>, BEFAIR <dbl+lbl>, BETRLANG <dbl+lbl>, BIBLE <dbl+lbl>,
## #   BIGBANG <dbl+lbl>, BIGBANG1 <dbl+lbl>, BIGBANG2 <dbl+lbl>, BIRD <dbl+lbl>,
## #   BIRDB4 <dbl+lbl>, BORN <dbl+lbl>, BOYORGRL <dbl+lbl>, BREAKDWN <dbl+lbl>,
## #   BUDDHSTS <dbl+lbl>, BUYESOP <dbl+lbl>, BUYVALUE <dbl+lbl>,
## #   CANTRUST <dbl+lbl>, CAPPUN <dbl+lbl>, CAT <dbl+lbl>, CATB4 <dbl+lbl>,
## #   CHARACTR <dbl+lbl>, CHEMGEN <dbl+lbl>, CHILDS <dbl+lbl>,
## #   CHLDIDEL <dbl+lbl>, CHRISTNS <dbl+lbl>, CHURHPOW <dbl+lbl>,
## #   CLASS <dbl+lbl>, CLERGVTE <dbl+lbl>, CLOSETO1 <dbl+lbl>,
## #   CLOSETO2 <dbl+lbl>, CLOSETO3 <dbl+lbl>, CLOSETO4 <dbl+lbl>,
## #   CLOSETO5 <dbl+lbl>, CNTCTFAM <dbl+lbl>, CNTCTFRD <dbl+lbl>,
## #   CNTCTKID <dbl+lbl>, CNTCTPAR <dbl+lbl>, CNTCTSIB <dbl+lbl>,
## #   CODEG <dbl+lbl>, CODEN <dbl+lbl>, COEDUC <dbl+lbl>, COEVWORK <dbl+lbl>,
## #   COFUND <dbl+lbl>, COHORT <dbl+lbl>, COHRS1 <dbl+lbl>, COHRS2 <dbl+lbl>,
## #   COIND10 <dbl+lbl>, COISCO08 <dbl+lbl>, COJew <dbl+lbl>, COLATH <dbl+lbl>,
## #   COLCOM <dbl+lbl>, COLDEG1 <dbl+lbl>, COLHOMO <dbl+lbl>, COLMIL <dbl+lbl>,
## #   COLMSLM <dbl+lbl>, COLRAC <dbl+lbl>, COLSCI <dbl+lbl>, COLSCINM <dbl+lbl>,
## #   ...
dim(gss_2018_1) #데이터 구조 보기
## [1] 2348 1065
names(gss_2018_1)  #변수명 보기
View(gss_2018_1) #전체를 엑셀처럼 보기

\(~\)

2-2. 자료 읽기_방법2: foreign 패키지:: read.spss(), read.stata(), read.sas()

library(foreign) #구동
## Warning: 패키지 'foreign'는 R 버전 4.1.2에서 작성되었습니다
gss_2018_2 <- read.spss("C:/Users/distr/OneDrive/R FILE/r_Intro/GSS2018.sav")

중요 foreign 패키지는 list 형태로 불러옴

\(~\)

2-3-1. 자료 읽기_방법3-1: 만약에 excel file로 제공된 data라면? readxl::read_excel()

\(~\)

library(readxl)
## Warning: 패키지 'readxl'는 R 버전 4.1.2에서 작성되었습니다
data <- read_excel("file pathway" #파일 경로
           , sheet = 1 # 1번 시트만 가져와라
           , col_names = T # 첫 행 변수명으로 가져올까?
           , na = c("", "NA", ".") #파일에서 결측값
           , skip = 15) #몇 번 행을 skip할까?

\(~\)

2-3-2. 자료 읽기_방법3-2: read_excel()이 쓰기 싫으면? gdata::read.xls

library(gdata)
data <- read.xls("file pathway"
                 , sheet = 1
                 , stringsAsFactors = F #character를 Factor로 읽지 않기
                 , na.strings = c("", "NA", ".")) #파일에서 결측값

\(~\)

3. 불러온 데이터를 csv 파일로 변환하여 내보내기: write.csv

R에 데이터를 불러온 뒤 항상 csv 파일로 변환하여 내보내야 나중에 다른 패키지에서 사용할 때 편리함!

write.csv(gss_2018_1,
          file = "C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_1.csv", #파일명
          row.names = F) #T로 하면 첫 열, 즉 각 행의 이름이 데이터로 저장됨. 따라서 보통은 F.

워킹디렉토리에 “gss_2018_1.csv”가 생겼는지 확인


\(~\)

4. 변환된 csv 파일을 다시 읽어오기

굳이? 라고 생각할 수 있지만, 그냥 난 습관적으로 csv 파일을 다시 읽어오는게 맘이 편함;;

4-1. 방법1: read.csv

gss_2018_3 <- read.csv("C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_1.csv"
                      , header = T #첫 행 변수명으로  
                      , sep = "," #csv에서 자료 구분은 ","
                      , stringsAsFactors = FALSE #character를 Factor로 읽지 않기
                      , na.strings = c("", "NA", ".")) #csv파일에서 결측값 "", "NA", "."

중요 한국 데이터를 불러올 때, 만약 encoding을 UTF-8로 설정한 뒤 불러오기에서 에러가 난다면? fileEncoding = “UCS-2LE” 을 옵션에 추가할 것. (https://hoon427.tistory.com/71)

\(~\)

4-2. 방법2: data.table::fread

fread는 대용량 파일을 빠르게 불러오는데 유용함.

library("data.table")
gss_2018_4 <- fread("C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_1.csv"
                      , header = T #첫 행 변수명으로  
                      , sep = "," #csv에서 자료 구분은 ","
                      , stringsAsFactors = FALSE #character를 Factor로 읽지 않기
                      , na.strings = c("", "NA", ".")) #csv파일에서 결측값 "", "NA", "."

\(~\)

4-3. 방법3 readr::read_csv

readr 패키지에서 read_csv를 하면 tibble로 저장함.

library(readr) #readr은 tidyverse 내 구성 패키지
gss_2018_5 <- read_csv("C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_1.csv"
                       , col_names = T #첫 행 변수명이 없을 때는 F
                       , na = c("", "NA", ".")) #csv파일에서 결측값 "", "NA", "."

\(~\)

5. 저장하기

save(gss_2018_2, file = "C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_2.RData")
save(gss_2018_1, gss_2018_2, gss_2018_3, file = "C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018_1_2.RData") #둘 이상의 객체도 저장 가능
save.image(file  = "C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018.RData") #현재 하고 있는 모든 객체 저장

\(~\)

6. 저장된 R 파일 불러오기

보통 R studio 실행한 다음에 Environment가 지저분 함. 그렇기 때문에 새로운 작업을 시작하기 전 깨끗하게 할 필요가 있음. 그럴 땐 rm를 실행.

rm(list=ls())
load("C:/Users/distr/OneDrive/R FILE/r_Intro/gss_2018.RData") #불러오기