1 세금의 분류

세금은 국가를 집행하는데 꼭 필요한 재원이 된다. 다수 유튜브 강의에서 언급된 내용을 종합하면 다음과 같다.

  • 세금
    • 소득
      • 소득세: 개인이 1년간 벌어들인 소득
      • 법인세: 법인이 1년간 벌어들인 소득
    • 소비
      • 부가가치세: 소비의 10% 붙이는 세금
      • 개별소비세: (과)소비의 5~20% 붙이는 세금
    • 재산
      • 취득록세, 상속세(사망), 증여세(생존): 재산을 살때 내는 세금
      • 보유세(재산세, 종합부동산세): 재산을 갖고 있을 때 내는 세금
      • 양도세: 재산을 팔때 내는 세금
library(tidyverse)
library(collapsibleTree)

tax_taxonomy <- tribble(~"대분류", ~"중분류", ~"소분류",
        "세금", "소득", "소득세",
        "세금", "소득", "법인세",
        "세금", "소비", "부가가치세",
        "세금", "소비", "개별소비세",
        "세금", "재산", "취득세", 
        "세금", "재산", "보유세", 
        "세금", "재산", "처분")

tax_taxonomy %>% 
  DT::datatable()
collapsibleTree(
  tax_taxonomy,
  hierarchy = c("대분류", "중분류", "소분류"),
  width = 800,
  root = "대한민국",
  zoomable = FALSE,
  collapsed = TRUE
)

2 국세 통계 1 2 3

“직장인 지갑만 털었다” 기사 내용을 중심으로 국세청 국세통계 데이터를 바탕으로 재현해보자.

세금과 직업

조세플러스 (2018-07-27), “우리나라, 재산관련 세수 49조-총세수의 12%…OECD 2위” 실린 내용을 바탕으로 전반적인 세금 징수 금액에 대한 감을 잡아보자.

  • 2015년 재산관련 세수: 48.6조
    • 재산세 9.3조
    • 종합부동산세 1.4조
    • 상속세 1.9조
    • 증여세 3.1조
    • 등록면허세 1.8조
    • 증권거래세 4.7조
    • 취득세 20.1조
    • 기타 6.3조

2.1 데이터 정제 작업

국세청 → 국세통계 → 통계자료실에서 년도별 국세 통계데이터를 다운로드 받아 압축을 풀어 엑셀 파일로부터 항목별 세금 징수정보를 추출한다.

2009년부터 2018년까지 10년치 엑셀 원본에서 항목조정이 된 것은 대세에 지장이 되지 않는 범위에서 전반적인 추세를 보기 위해서 근로소득세(갑), 근로소득세(을) 같은 사항은 근로소득세로 일원화하여 통계작업을 수행한다.

금융소득은 이자소득세과 배당소득세를 합한 금액이고, 급여 생활자는 근로소득세, 법이은 법인세 등이다.

  • 급여 생활자: 근로소득세
  • 자영업자: 종합소득세 + 사업소득세
  • 금융소득: 이자소득세 + 배당소득세
  • 법인: 법인세
  • 부동산
    • 종합부동산세
    • 양도소득세: 부동산, 회원권 등
library(readxl)
library(tidyverse)

## 2008 년
# tax_2008 <- read_excel("data/tax/2008 statistics/2-1-1. 예산 및 세수 실적(p.12).xls", sheet="(1)", skip=8)
# 
# tax_2008_df <- tax_2008 %>% 
#   set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
#   filter(구분 %in% c("소득세", "법인세", "부가가치세", "특별소비세", "상속세", "증여세", "종합부동산세")) %>%  # 취득세 없음. 
#   mutate(연도=2008) %>% 
#   select(연도, 구분, 수납액) %>% 
#   mutate(구분 = ifelse(구분 == "특별소비세", "개별소비세", 구분))

## 2009 년
tax_2009 <- read_excel("data/tax/2009 statistics/2009_statistics/02. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2009_df <- tax_2009 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세(갑)", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2009) %>% 
  select(연도, 구분, 수납액) %>% 
  mutate(구분 = ifelse(구분 == "근로소득세(갑)", "근로소득세", 구분))

## 2010 년
tax_2010 <- read_excel("data/tax/2010 statistics/02. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2010_df <- tax_2010 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세(갑)", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2010) %>% 
  select(연도, 구분, 수납액) %>% 
  mutate(구분 = ifelse(구분 == "근로소득세(갑)", "근로소득세", 구분))

## 2011 년
tax_2011 <- read_excel("data/tax/2011 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2011_df <- tax_2011 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2011) %>% 
  select(연도, 구분, 수납액)


## 2012 년
tax_2012 <- read_excel("data/tax/2012 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2012_df <- tax_2012 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2012) %>% 
  select(연도, 구분, 수납액)

## 2013 년
tax_2013 <- read_excel("data/tax/2013 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2013_df <- tax_2013 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2013) %>% 
  select(연도, 구분, 수납액)

## 2014 년
tax_2014 <- read_excel("data/tax/2014년 국세통계/2014 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2014_df <- tax_2014 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2014) %>% 
  select(연도, 구분, 수납액)

## 2015 년
tax_2015 <- read_excel("data/tax/2015년 국세통계(396개)/Excel_2015년 국세통계(396개)/2.징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2015_df <- tax_2015 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2015) %>% 
  select(연도, 구분, 수납액)

## 2016 년
tax_2016 <- read_excel("data/tax/2016년 국세통계(418개) Excel/2016년_국세통계(418개)_Excel/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2016_df <- tax_2016 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2016) %>% 
  select(연도, 구분, 수납액)

## 2017 년
tax_2017 <- read_excel("data/tax/2017년 국세통계(440개) Excel(8)/2017년_국세통계(440개)_Excel/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2017_df <- tax_2017 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2017) %>% 
  select(연도, 구분, 수납액)

## 2018 년
tax_2018 <- read_excel("data/tax/2018년 국세통계연보/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)

tax_2018_df <- tax_2018 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2018) %>% 
  select(연도, 구분, 수납액)

## 2019 년
tax_2019 <- read_excel("data/tax/2019년 발행 통계연보 파일_210902 수정/2-1-1. 예산 및 세수 실적.xlsx", sheet="(1)", skip=8)

tax_2019_df <- tax_2019 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2019) %>% 
  select(연도, 구분, 수납액)

## 2020 년
tax_2020 <- read_excel("data/tax/2020년 통계연보 파일_210902 수정/2-1-1. 예산 및 세수 실적.xlsx", sheet="(1)", skip=8)

tax_2020_df <- tax_2020 %>% 
  set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>% 
  filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>%  # 취득세 없음. 
  mutate(연도=2020) %>% 
  select(연도, 구분, 수납액)


###########################
tax_df <- tax_2009_df %>% 
  bind_rows(tax_2010_df) %>% 
  bind_rows(tax_2011_df) %>% 
  bind_rows(tax_2012_df) %>% 
  bind_rows(tax_2013_df) %>% 
  bind_rows(tax_2014_df) %>% 
  bind_rows(tax_2015_df) %>% 
  bind_rows(tax_2016_df) %>% 
  bind_rows(tax_2017_df) %>% 
  bind_rows(tax_2018_df) %>% 
  bind_rows(tax_2019_df) %>% 
  bind_rows(tax_2020_df)

tax_df %>% 
  mutate(구분 = factor(구분, levels = c("근로소득세(갑)", "근로소득세", "법인세", "부가가치세", "개별소비세", "증여세", "상속세", "양도소득세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세"))) %>% 
  mutate(수납액 = `수납액`/10^6) %>% 
  group_by(연도, 구분) %>% 
  summarise(징수액 = sum(수납액)) %>% 
  spread(연도, 징수액) %>% 
    DT::datatable() %>% 
    DT::formatRound(2:13, digits=1)

2.2 종부세와 근로세

tax_category_df <- tax_df %>% 
  mutate(세목 = case_when(구분 %in% c("상속세", "증여세", "종합부동산세", "양도소득세") ~ "재산소득",
                            구분 %in% c("이자소득세", "배당소득세") ~ "금융소득",
                            구분 %in% c("종합소득세", "사업소득세") ~ "자영업자",
                            구분 %in% c("근로소득세") ~ "급여사업자",
                            TRUE ~ 구분)) %>% 
  mutate(세목 = ifelse(구분 == "종합부동산세", "종합부동산세", 세목)) %>% 
  mutate(수납액 = `수납액`/10^6) %>% 
  select(연도, 세목, 수납액) %>% 
  filter(세목 %in% c("급여사업자", "금융소득", "재산소득", "종합부동산세", "자영업자")) %>% 
  group_by(세목, 연도) %>% 
  dplyr::summarise(수납액 = sum(수납액)) %>% 
  ungroup() %>% 
  mutate(세목 = factor(세목, levels = c("급여사업자", "자영업자", "종합부동산세", "금융소득", "재산소득"))) 

tax_category_df %>% 
  spread(연도, 수납액) %>% 
  DT::datatable() %>% 
  DT::formatRound(2:13, digits=1)

2.3 시각화

다음 4가지 범주로 시각화한다.

  • 급여사업자를 대표하는 근로소득세
  • 자영업자대 대표하는 종합소득세, 사업소득세
  • 부동산을 대표하는 종합부동산세
  • 금융을 대표하는 이자소득세와 배당소득세

2.3.1 정적 시각화

library(gghighlight)
extrafont::loadfonts()

tax_category_df %>% 
  filter(세목 != "재산소득") %>% 
  mutate(세목 = factor(세목, levels = c("급여사업자", "자영업자", "금융소득", "종합부동산세"))) %>% 
  ggplot(aes(x=연도, y=수납액, group=세목, color=세목)) +
    geom_point(size = 2) +
    geom_line() +
    # gghighlight(max(연도) >= 2020,  use_direct_label = FALSE) +
    theme_bw(base_family = "NanumGothic") +
    labs(x="", y ="징수된 세금 (조원)",
         title   ="급여소득자와 자영업자 10년간의 변화",
         caption ="자료출처: 국세청 국세통계포털(2009 - 2020), https://tasis.nts.go.kr/",
         subtitle = "코로나 발생이후 세금납부 변화",
         color  = "세금구분") +
    theme(legend.position = "right",
          legend.text = element_text(size = 13, colour = "black", family = "NanumBarunpen", face="bold"),
          strip.text.x = element_text(size = 15, colour = "black", family = "NanumMyeongjo", face="bold"),
          strip.background=element_rect(fill="gray95"),
          axis.text.x = element_text(face="bold", size=13, angle=0),
          axis.text.y = element_text(face="bold", size=13, angle=0),
          plot.title=element_text(size=20, face="bold", family = "NanumBarunpen"),
          plot.caption = element_text(face="bold", size=13, colour="grey10", family = "NanumBarunpen"),
          plot.subtitle=element_text(face="bold", size=13, colour="grey10", family = "NanumBarunpen")) 

2.3.2 인터랙티브 시각화

library(dygraphs)
library(xts)

tax_category_wide_df <- tax_category_df %>% 
  filter(세목 != "재산소득") %>% 
  spread(세목, 수납액) %>% 
  mutate(연도 = lubridate::make_date(year=연도, month=7, day=1))

tax_category_xts <- xts(tax_category_wide_df[,-1], order.by = tax_category_wide_df$연도)

dygraph(tax_category_xts, main="급여소득자와 자영업자 10년간의 변화",
        y="징수된 세금 (조원)") %>% 
  dyOptions(drawPoints = TRUE, pointSize = 2) %>% 
  dyHighlight(highlightSeriesOpts = list(strokeWidth = 3)) %>% 
  dyLegend(width = 600)