세금은 국가를 집행하는데 꼭 필요한 재원이 된다. 다수 유튜브 강의에서 언급된 내용을 종합하면 다음과 같다.
library(tidyverse)
library(collapsibleTree)
tribble(~"대분류", ~"중분류", ~"소분류",
tax_taxonomy <-"세금", "소득", "소득세",
"세금", "소득", "법인세",
"세금", "소비", "부가가치세",
"세금", "소비", "개별소비세",
"세금", "재산", "취득세",
"세금", "재산", "보유세",
"세금", "재산", "처분")
%>%
tax_taxonomy DT::datatable()
collapsibleTree(
tax_taxonomy,hierarchy = c("대분류", "중분류", "소분류"),
width = 800,
root = "대한민국",
zoomable = FALSE,
collapsed = TRUE
)
“직장인 지갑만 털었다” 기사 내용을 중심으로 국세청 국세통계 데이터를 바탕으로 재현해보자.
조세플러스 (2018-07-27), “우리나라, 재산관련 세수 49조-총세수의 12%…OECD 2위” 실린 내용을 바탕으로 전반적인 세금 징수 금액에 대한 감을 잡아보자.
국세청 → 국세통계 → 통계자료실에서 년도별 국세 통계데이터를 다운로드 받아 압축을 풀어 엑셀 파일로부터 항목별 세금 징수정보를 추출한다.
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 년
2009 <- read_excel("data/tax/2009 statistics/2009_statistics/02. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2009_df <- tax_2009 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세(갑)", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2009) %>%
select(연도, 구분, 수납액) %>%
mutate(구분 = ifelse(구분 == "근로소득세(갑)", "근로소득세", 구분))
## 2010 년
2010 <- read_excel("data/tax/2010 statistics/02. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2010_df <- tax_2010 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세(갑)", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2010) %>%
select(연도, 구분, 수납액) %>%
mutate(구분 = ifelse(구분 == "근로소득세(갑)", "근로소득세", 구분))
## 2011 년
2011 <- read_excel("data/tax/2011 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2011_df <- tax_2011 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2011) %>%
select(연도, 구분, 수납액)
## 2012 년
2012 <- read_excel("data/tax/2012 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2012_df <- tax_2012 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2012) %>%
select(연도, 구분, 수납액)
## 2013 년
2013 <- read_excel("data/tax/2013 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2013_df <- tax_2013 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2013) %>%
select(연도, 구분, 수납액)
## 2014 년
2014 <- read_excel("data/tax/2014년 국세통계/2014 statistics/2. 징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2014_df <- tax_2014 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2014) %>%
select(연도, 구분, 수납액)
## 2015 년
2015 <- read_excel("data/tax/2015년 국세통계(396개)/Excel_2015년 국세통계(396개)/2.징수/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2015_df <- tax_2015 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2015) %>%
select(연도, 구분, 수납액)
## 2016 년
2016 <- read_excel("data/tax/2016년 국세통계(418개) Excel/2016년_국세통계(418개)_Excel/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2016_df <- tax_2016 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2016) %>%
select(연도, 구분, 수납액)
## 2017 년
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 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2017) %>%
select(연도, 구분, 수납액)
## 2018 년
2018 <- read_excel("data/tax/2018년 국세통계연보/2-1-1. 예산 및 세수 실적.xls", sheet="(1)", skip=8)
tax_
2018_df <- tax_2018 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2018) %>%
select(연도, 구분, 수납액)
## 2019 년
2019 <- read_excel("data/tax/2019년 발행 통계연보 파일_210902 수정/2-1-1. 예산 및 세수 실적.xlsx", sheet="(1)", skip=8)
tax_
2019_df <- tax_2019 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2019) %>%
select(연도, 구분, 수납액)
## 2020 년
2020 <- read_excel("data/tax/2020년 통계연보 파일_210902 수정/2-1-1. 예산 및 세수 실적.xlsx", sheet="(1)", skip=8)
tax_
2020_df <- tax_2020 %>%
tax_ set_names(c("구분", "구분영어", "예산액", "징수결정액", "수납액", "불납결손액", "미수납액", "비율")) %>%
filter(구분 %in% c("근로소득세", "양도소득세", "법인세", "부가가치세", "개별소비세", "상속세", "증여세", "종합부동산세", "이자소득세", "배당소득세", "종합소득세", "사업소득세")) %>% # 취득세 없음.
mutate(연도=2020) %>%
select(연도, 구분, 수납액)
###########################
tax_2009_df %>%
tax_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)
tax_df %>%
tax_category_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)
다음 4가지 범주로 시각화한다.
library(gghighlight)
::loadfonts()
extrafont
%>%
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"))
library(dygraphs)
library(xts)
tax_category_df %>%
tax_category_wide_df <- filter(세목 != "재산소득") %>%
spread(세목, 수납액) %>%
mutate(연도 = lubridate::make_date(year=연도, month=7, day=1))
xts(tax_category_wide_df[,-1], order.by = tax_category_wide_df$연도)
tax_category_xts <-
dygraph(tax_category_xts, main="급여소득자와 자영업자 10년간의 변화",
y="징수된 세금 (조원)") %>%
dyOptions(drawPoints = TRUE, pointSize = 2) %>%
dyHighlight(highlightSeriesOpts = list(strokeWidth = 3)) %>%
dyLegend(width = 600)