기본적인 R 사용법과 R 베이스 함수들

cbind()라는 함수를 사용할 경우 매트릭스 데이터가 되고 data.frame()이라는 함수를 사용하면 데이터프레임 데이터가 된다. 그러나 타이디버스 라이브러리 함수들을 활용한 데이터 관리가 훨씬 편리하다. 타이디데이터에서 사용하는 R 데이터 오브젝트를 티블(tibble)이라고 부른다.

#변수지정
name = c('연돌이','세순이')
born = c("1999-3-2","1999-3-3")
year = c(2L,4L)
grade = c('A+','A-')
height = c(178,170)


타이디버스 라이브러리를 먼저 구동한 후, tibble() 함수에 지정된 변수들을 차례대로 입력하면 된다.

# 타이디버스 라이브러리
library('tidyverse')
#티블데이터 설정
my_first_tibble = tibble(name,born,year,grade,height)
my_first_tibble
## # A tibble: 2 x 5
##   name   born      year grade height
##   <chr>  <chr>    <int> <chr>  <dbl>
## 1 연돌이 1999-3-2     2 A+       178
## 2 세순이 1999-3-3     4 A-       170


티블데이터 역시 데이터프레임과 마찬가지로 가로줄과 세로줄의 위치와 구역을 지정하며 인덱싱을 통해 해당 데이터의 일부를 뽑아낼 수 있다.

#데이터 인덱싱
my_first_tibble[,2:4]
## # A tibble: 2 x 3
##   born      year grade
##   <chr>    <int> <chr>
## 1 1999-3-2     2 A+   
## 2 1999-3-3     4 A-
#파일 위치 파악
getwd()
## [1] "D:/tidyverse"

파이프 오퍼레이터(%>%)

파이프 오퍼레이터(%>%)는 타이디버스 라이브러를 사용하여 작성된 R코드를 단순화시켜준다. 흔히 ‘A then B’ 라고 읽는다.

# 엑셀 파일 패키지
library('readxl')
read_xls('data_library.xls') %>%
  count(기간)
## # A tibble: 7 x 2
##   기간      n
## * <chr> <int>
## 1 2010     26
## 2 2011     26
## 3 2012     26
## 4 2013     26
## 5 2014     26
## 6 2015     26
## 7 2016     26
#변수선별(select)
seoul_library = read_xls("data_library.xls")
seoul_library2 = seoul_library %>% 
  select(기간,자치구,계)
seoul_library2
## # A tibble: 182 x 3
##    기간  자치구      계
##    <chr> <chr>    <dbl>
##  1 2010  합계       464
##  2 2010  종로구      50
##  3 2010  중구        57
##  4 2010  용산구      18
##  5 2010  성동구       6
##  6 2010  광진구       9
##  7 2010  동대문구    17
##  8 2010  중랑구       4
##  9 2010  성북구      16
## 10 2010  강북구      10
## # ... with 172 more rows

변수선별, 사례선별 예제

1단계. data_TESS3_131.sav 데이터 불러오기
2단계. PPGENDER, PPAGE, PARTY7로 시작하는 변수들 선별
3단계. 40-59세의 남성응답자 선별한 후 티블 데이터로 저장
4단계. 이렇게 얻은 데이터에서 PARTY7 변수의 분포확인

# SPSS 파일 패키지
library(haven)
mydata_131 = read_spss('data_TESS3_131.sav') %>% 
  select(PPGENDER, PPAGE, PARTY7) %>% 
  filter(PPGENDER==1 & (PPAGE>=40 & PPAGE <=59))

mydata_131 %>% 
  count(as_factor(PARTY7))
## # A tibble: 7 x 2
##   `as_factor(PARTY7)`             n
## * <fct>                       <int>
## 1 Strong Republican              19
## 2 Not Strong Republican          23
## 3 Leans Republican               19
## 4 Undecided/Independent/Other     4
## 5 Leans Democrat                 15
## 6 Not Strong Democrat            19
## 7 Strong Democrat                11

변수 수준별 집단 구분

data131 = read_spss('data_TESS3_131.sav') %>% 
  select(starts_with('PP'))
by_data_131 = data131 %>% 
  group_by(PPGENDER)
by_data_131 %>% 
  print(n=2)
## # A tibble: 593 x 24
## # Groups:   PPGENDER [2]
##   PPAGE ppagecat ppagect4   PPEDUC PPEDUCAT  PPETHM PPGENDER PPHHHEAD
##   <dbl> <dbl+lb> <dbl+lb> <dbl+lb> <dbl+lb> <dbl+l> <dbl+lb> <dbl+lb>
## 1    29 2 [25-3~ 1 [18-2~ 12 [Bac~ 4 [Bach~ 1 [Whi~ 1 [Male]  0 [No] 
## 2    53 4 [45-5~ 3 [45-5~  9 [HIG~ 2 [High~ 1 [Whi~ 2 [Fema~  1 [Yes]
## # ... with 591 more rows, and 16 more variables: PPHHSIZE <dbl+lbl>,
## #   PPHOUSE <dbl+lbl>, PPINCIMP <dbl+lbl>, PPMARIT <dbl+lbl>,
## #   PPMSACAT <dbl+lbl>, PPREG4 <dbl+lbl>, ppreg9 <dbl+lbl>,
## #   PPRENT <dbl+lbl>, PPSTATEN <dbl+lbl>, PPT01 <dbl+lbl>,
## #   PPT25 <dbl+lbl>, PPT612 <dbl+lbl>, PPT1317 <dbl+lbl>,
## #   PPT18OV <dbl+lbl>, PPWORK <dbl+lbl>, PPNET <dbl+lbl>