ch 12 - Demographic of Respondent in R

Page content

Intro

  • 지난 시간에 설문조사 전처리에 대해 배웠다면 이번에는 경영/사회과학 논문에서 필수적으로 기재해야 하는 표본의 특성을 간단한 프로그램으로 요약하는 것을 코딩한다.

(1) 주요 패키지

  • 이번 포스트부터 gt 패키지를 사용하려고 한다.
    • gt: ggplot2와 같이 Table를 문법으로 컨트롤 할 수 있도록 구현된 패키지이다.
    • kableExtra: HTML로 출력할 수 있도록 도와주는 패키지이다.
library(readr)
library(dplyr)
library(gt)
library(gtsummary)

I. 데이터 가져오기

  • 우선 데이터를 불러온다.
data <- read_csv('data/thesis_mater.csv') %>% 
  distinct() %>% # 중복데이터 제거
  rename(Position = founder_employee, # 출력을 위한 변수명 정리
         Age = age_of_respondent, 
         Education = Education_Level)
glimpse(data %>% select(Firm_Age:Business_Area))
  • 전체 34개의 변수 중에서, 문자열 관련 데이터만 추출하였다.
  • 어떤 데이터를 표본의 특성으로 삼아야 할까?
    • 위 10개의 데이터에는 통제변수1가 들어가 있다.
    • 통제변수는 표본의 특징이 아니기 때문에 통제변인을 제외한 나머지 변수들을 추출한다.
## Rows: 103
## Columns: 10
## $ Firm_Age      <chr> "5 years above", "Less than 2 years", "5 years above", …
## $ Firm_Size     <chr> "Above 15 members", "Less than 5 members", "Less than 5…
## $ WE1           <chr> "No, I don't have experience", "No, I don't have experi…
## $ WE2           <chr> "Yes", "No", "No", "Yes", "No", "No", "No", "No", "No",…
## $ WE3           <chr> "Yes", "Yes", "Yes", "Yes", "Yes", "No", "Yes", "No", "…
## $ gender        <chr> "Female", "Male", "Female", "Male", "Male", "Female", "…
## $ Position      <chr> "Employee", "Employee", "Founder of Company", "Employee…
## $ Age           <chr> "30-39", "Younger than 30", "Younger than 30", "Younger…
## $ Education     <chr> "Undergraduate School", "Undergraduate School", "Underg…
## $ Business_Area <chr> "Others", "Media and Entertainment", "Others", "Others"…
  • 표본의 특성을 기술하는 데이터는 아래와 같이 추출한다.
    • gender, founder_employee, age_of_respondent, educational_level, business_area
data2 <- data %>% 
  select(gender, Position, Age, Education, Business_Area)

glimpse(data2)
## Rows: 103
## Columns: 5
## $ gender        <chr> "Female", "Male", "Female", "Male", "Male", "Female", "…
## $ Position      <chr> "Employee", "Employee", "Founder of Company", "Employee…
## $ Age           <chr> "30-39", "Younger than 30", "Younger than 30", "Younger…
## $ Education     <chr> "Undergraduate School", "Undergraduate School", "Underg…
## $ Business_Area <chr> "Others", "Media and Entertainment", "Others", "Others"…

II. 표본 특성 표 출력

  • 보통 논문에 들어가는 표본의 특징은 Category, Frequency, and Percentage(%) 정도만 필요하다.
  • 이 때, Table을 가공해줄 수 있는 gtsummary 패키지를 활용한다.
set_gtsummary_theme(theme_gtsummary_journal(journal = "jama"))

data2 %>% 
  tbl_summary(by = gender) %>% 
  add_overall() %>% 
  add_n() %>% 
  modify_header(label = "**Variable**") %>% # update the column header
  bold_labels()
Variable N Overall, N = 103 Female, N = 621 Male, N = 411
Position 103
Employee 68 (66) 35 (56) 33 (80)
Founder of Company 35 (34) 27 (44) 8 (20)
Age 103
30-39 37 (36) 19 (31) 18 (44)
40-49 8 (7.8) 4 (6.5) 4 (9.8)
50 or above 2 (1.9) 2 (3.2) 0 (0)
Younger than 30 56 (54) 37 (60) 19 (46)
Education 103
Graduate School 25 (24) 15 (24) 10 (24)
High School 7 (6.8) 6 (9.7) 1 (2.4)
Undergraduate School 71 (69) 41 (66) 30 (73)
Business_Area 103
E-Commerce 16 (16) 11 (18) 5 (12)
Education 4 (3.9) 2 (3.2) 2 (4.9)
Energy 1 (1.0) 0 (0) 1 (2.4)
Enterprise Services 4 (3.9) 2 (3.2) 2 (4.9)
Fintech 9 (8.7) 6 (9.7) 3 (7.3)
Logistics 5 (4.9) 1 (1.6) 4 (9.8)
Manufacturing 3 (2.9) 2 (3.2) 1 (2.4)
Media and Entertainment 7 (6.8) 4 (6.5) 3 (7.3)
Medical and Healthcare 1 (1.0) 1 (1.6) 0 (0)
Online to Offline Commerce 2 (1.9) 1 (1.6) 1 (2.4)
Others 45 (44) 31 (50) 14 (34)
Real Estate and Household 1 (1.0) 0 (0) 1 (2.4)
Transportation/Automotive 4 (3.9) 0 (0) 4 (9.8)
Travel 1 (1.0) 1 (1.6) 0 (0)

1 Statistics presented: n (%)

  • 위 데이터를 기준으로 본 설문조사에서는 Business Area를 재 범주화 할 필요가 있다.
  • 또한 Others에 대한 정의를 어떻게 내려야 할지에 대한 기준도 세워야 할 필요성이 있다.

소결론

  • 논문 작성 시, 표본의 특성을 산출할 때 대개는 피벗테이블을 활용해야 한다.
    • 논리적으로는 그렇지만, 이를 논문에 적합한 표로 구성하기에는 조금 많은 수고로움이 따른다.
  • gtsummary 패키지를 활용하여 표본의 특성 테이블을 매우 빠르게 작성할 수 있어서 좋았다.
    • gt패키지의 확장 패키지라 보면 좋을 것 같다.

  1. 두 변수간의 관계를 정확히 파악하기 위해 두 변수 사이의 관계에 영향을 미칠 수 있는 제3의 변수를 연구과정에서 통제하는 경우이다. ↩︎