Data
원자료는 세종실록, 요약표는 오기수 교수의 논문에서.
서울 |
대신 등 |
관료 |
찬성 |
21 |
서울 |
대신 등 |
관료 |
반대 |
194 |
서울 |
수령 |
관료 |
찬성 |
259 |
서울 |
수령 |
관료 |
반대 |
393 |
서울 |
3품이하현직 |
관료 |
찬성 |
443 |
서울 |
3품이하현직 |
관료 |
반대 |
117 |
유후사 |
품관촌민 |
품관촌민 |
찬성 |
1123 |
유후사 |
품관촌민 |
품관촌민 |
반대 |
71 |
경기 |
3품이하전직 |
관료 |
찬성 |
29 |
경기 |
3품이하전직 |
관료 |
반대 |
5 |
경기 |
품관촌민 |
품관촌민 |
찬성 |
17076 |
경기 |
품관촌민 |
품관촌민 |
반대 |
236 |
평안 |
대신 등 |
관료 |
반대 |
1 |
평안 |
3품이하전직 |
관료 |
찬성 |
6 |
평안 |
3품이하전직 |
관료 |
반대 |
35 |
평안 |
품관촌민 |
품관촌민 |
찬성 |
1326 |
평안 |
품관촌민 |
품관촌민 |
반대 |
28474 |
황해 |
3품이하전직 |
관료 |
찬성 |
17 |
황해 |
3품이하전직 |
관료 |
반대 |
17 |
황해 |
품관촌민 |
품관촌민 |
찬성 |
4454 |
황해 |
품관촌민 |
품관촌민 |
반대 |
15601 |
충청 |
대신 등 |
관료 |
반대 |
2 |
충청 |
3품이하전직 |
관료 |
찬성 |
35 |
충청 |
3품이하전직 |
관료 |
반대 |
26 |
충청 |
품관촌민 |
품관촌민 |
찬성 |
6982 |
충청 |
품관촌민 |
품관촌민 |
반대 |
14013 |
강원 |
3품이하전직 |
관료 |
찬성 |
5 |
강원 |
3품이하전직 |
관료 |
반대 |
10 |
강원 |
품관촌민 |
품관촌민 |
찬성 |
939 |
강원 |
품관촌민 |
품관촌민 |
반대 |
6888 |
함길 |
대신 등 |
관료 |
반대 |
1 |
함길 |
3품이하전직 |
관료 |
찬성 |
3 |
함길 |
3품이하전직 |
관료 |
반대 |
14 |
함길 |
품관촌민 |
품관촌민 |
찬성 |
75 |
함길 |
품관촌민 |
품관촌민 |
반대 |
7387 |
경상 |
3품이하전직 |
관료 |
찬성 |
55 |
경상 |
3품이하전직 |
관료 |
반대 |
16 |
경상 |
품관촌민 |
품관촌민 |
찬성 |
36262 |
경상 |
품관촌민 |
품관촌민 |
반대 |
377 |
전라 |
대신 등 |
관료 |
반대 |
2 |
전라 |
3품이하전직 |
관료 |
찬성 |
42 |
전라 |
3품이하전직 |
관료 |
반대 |
12 |
전라 |
품관촌민 |
품관촌민 |
찬성 |
29505 |
전라 |
품관촌민 |
품관촌민 |
반대 |
257 |
전체 찬반
pander(format(tbl.vote, big.mark = ","))
kable(t(as.matrix(format(tbl.vote, big.mark = ","))), align = rep("r", 2))
kable(t(as.table(format(tbl.vote, big.mark = ","))), align = rep("r", 2))
pander(format(prop.table(tbl.vote)*100, digits = 3, nsmall = 1), caption = "전체 찬반(%)")
원형그래프
par(family = "나눔고딕")
gray.2 <- gray.colors(12)[c(12, 7)]
rainbow.2 <- rainbow(2)[2:1]
# pie(tbl.vote, col = gray.2)
pie(tbl.vote, col = rainbow.2)
title(main = "전체 찬반")
text(x = 0, y = c(0.4, -0.4), labels = format(tbl.vote, big.mark = ","))

계급별 찬반
kable(format(vote.class, big.mark = ","), align = rep("r", 5), caption = "계급별 찬반")
계급별 찬반
찬성 |
21 |
259 |
443 |
192 |
97,742 |
반대 |
200 |
393 |
117 |
135 |
73,304 |
kable(format(prop.table(vote.class, margin = 2)*100, digits = 3, nsmall = 1), align = rep("r", 5), caption = "계급별 찬반(%)")
계급별 찬반(%)
찬성 |
9.5 |
39.7 |
79.1 |
58.7 |
57.1 |
반대 |
90.5 |
60.3 |
20.9 |
41.3 |
42.9 |
품관촌민 별도 분석
품관촌민의 수효가 상대적으로 많아서
kable(format(vote.class.2, big.mark = ","), align = rep("r", 2), caption = "품관촌민")
품관촌민
찬성 |
915 |
97,742 |
반대 |
845 |
73,304 |
소계를 교차표의 주변에 계산
kable(format(vote.class.2.am, big.mark = ","), caption = "관료와 품관촌민(소계)", align = rep("r", 3))
관료와 품관촌민(소계)
찬성 |
915 |
97,742 |
98,657 |
반대 |
845 |
73,304 |
74,149 |
계 |
1,760 |
171,046 |
172,806 |
백분율을 계산하여 주변에 집계.
kable(format(prop.table(vote.class.2, margin = 2)*100, digits = 3, nsmall = 1), caption = "관료와 품관촌민(%)", align = rep("r", 3))
관료와 품관촌민(%)
찬성 |
52.0 |
57.1 |
반대 |
48.0 |
42.9 |
원형그래프
par(family = "나눔고딕")
par(mfrow = c(1, 2))
# pie(vote.class.2[, 1], labels = c("찬성", "반대"), col = gray.2)
pie(vote.class.2[, 1], labels = c("찬성", "반대"), col = rainbow.2)
title(main = "관료들의 찬반")
text(x = 0, y = c(0.4, -0.4), labels = vote.class.2[, 1])
# pie(vote.class.2[, 2], labels = c("찬성", "반대"), col = gray.2)
pie(vote.class.2[, 2], labels = c("찬성", "반대"), col = rainbow.2)
title(main = "품관촌민의 찬반")
text(x = 0, y = c(0.4, -0.4), labels = format(vote.class.2[, 2], big.mark = ","))

par(mfrow = c(1, 1))
지역별 찬반
관료와 품관촌민
kable(vote.region.bureaus, caption = "관료들의 지역별 찬반")
관료들의 지역별 찬반
찬성 |
723 |
29 |
6 |
17 |
35 |
5 |
3 |
55 |
42 |
반대 |
704 |
5 |
36 |
17 |
28 |
10 |
15 |
16 |
14 |
kable(format(prop.table(vote.region.bureaus, margin = 2)*100, digits = 3, nsmall = 1), align = rep("r", 9), caption = "관료들의 지역별 찬반(%)")
관료들의 지역별 찬반(%)
찬성 |
50.7 |
85.3 |
14.3 |
50.0 |
55.6 |
33.3 |
16.7 |
77.5 |
75.0 |
반대 |
49.3 |
14.7 |
85.7 |
50.0 |
44.4 |
66.7 |
83.3 |
22.5 |
25.0 |
kable(format(vote.region.commons, big.mark = ","), align = rep("r", 9), caption = "품관촌민들의 지역별 찬반")
품관촌민들의 지역별 찬반
찬성 |
1,123 |
17,076 |
1,326 |
4,454 |
6,982 |
939 |
75 |
36,262 |
29,505 |
반대 |
71 |
236 |
28,474 |
15,601 |
14,013 |
6,888 |
7,387 |
377 |
257 |
kable(format(prop.table(vote.region.commons, margin = 2)*100, digits = 1, nsmall = 1), align = rep("r", 9), caption = "품관촌민들의 지역별 찬반(%)")
품관촌민들의 지역별 찬반(%)
찬성 |
94.1 |
98.6 |
4.4 |
22.2 |
33.3 |
12.0 |
1.0 |
99.0 |
99.1 |
반대 |
5.9 |
1.4 |
95.6 |
77.8 |
66.7 |
88.0 |
99.0 |
1.0 |
0.9 |
서울의 찬반
kable(vote.seoul.class, caption = "서울의 찬반")
서울의 찬반
찬성 |
21 |
259 |
443 |
반대 |
194 |
393 |
117 |
kable(format(prop.table(vote.seoul.class, margin = 2)*100, digits = 1, nsmall = 1), align = rep("r", 3), caption = "서울의 찬반(%)")
서울의 찬반(%)
찬성 |
9.8 |
39.7 |
79.1 |
반대 |
90.2 |
60.3 |
20.9 |
막대그래프
서울의 계급별 찬반을 barplot
으로 그려봄. text()
의 좌표는 locator()
로 찾아냄.
par(family = "나눔고딕")
# barplot(vote.seoul.class, col = gray.2)
barplot(vote.seoul.class, col = rainbow.2)
title(main = "서울의 찬반")
text(x = c(0.7, 1.9, 1.9, 3.1, 3.1), y = c(120, 450, 135, 500, 220), labels = c("194","393", "259", "117", "443"))
# legend("topleft", inset = 0.05, fill = gray.2, legend = c("찬성", "반대"))
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))

mosaicplot()
par(family = "나눔고딕")
# mosaicplot(t(vote.seoul.class), col = gray.2, main = "서울의 찬반", xlab = "계급" , ylab ="찬반")
mosaicplot(t(vote.seoul.class), col = rainbow.2, main = "서울의 찬반", xlab = "계급" , ylab ="찬반")

지역별 관료들의 찬반(서울 제외)
kable(vote.region.bureaus[, -1], caption = "지역별 관료들의 찬반(서울 제외)")
지역별 관료들의 찬반(서울 제외)
찬성 |
29 |
6 |
17 |
35 |
5 |
3 |
55 |
42 |
반대 |
5 |
36 |
17 |
28 |
10 |
15 |
16 |
14 |
kable(format(prop.table(vote.region.bureaus[, -1], margin = 2)*100, digits = 1, nsmall = 1), align = rep("r", 3), caption = "지역별 관료들의 찬반(서울 제외, %)")
지역별 관료들의 찬반(서울 제외, %)
찬성 |
85.3 |
14.3 |
50.0 |
55.6 |
33.3 |
16.7 |
77.5 |
75.0 |
반대 |
14.7 |
85.7 |
50.0 |
44.4 |
66.7 |
83.3 |
22.5 |
25.0 |
막대그래프
par(family = "나눔고딕")
# barplot(vote.region.bureaus[, -1], beside = TRUE, col = gray.2)
barplot(vote.region.bureaus[, -1], beside = TRUE, col = rainbow.2)
title(main = "지방 관료들의 찬반")
# legend("topleft", inset = 0.05, fill = gray.2, legend = c("찬성", "반대"))
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))

mosaicplot()
의 활용
par(family = "나눔고딕")
# mosaicplot(t(vote.region.bureaus[, -1]), col = gray.2, main = "", xlab = "계급", ylab = "찬반")
mosaicplot(t(vote.region.bureaus[, -1]), col = rainbow.2, main = "", xlab = "계급", ylab = "찬반")
title(main = "지방 관료들의 찬반")

품관촌민들의 지역별 찬반
막대그래프
par(family = "나눔고딕")
# barplot(vote.region.commons, beside = TRUE, col = gray.2, axes = FALSE)
barplot(vote.region.commons, beside = TRUE, col = rainbow.2, axes = FALSE)
axis(2, at = seq(0, 30000, by = 5000), labels = c("0", "", "1만", "", "2만", "", "3만"), las = 1)
title(main = "품관촌민들의 지역별 찬반")
# legend("topleft", inset = 0.05, fill = gray.2, legend = c("찬성", "반대"))
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))

mosaicplot()
의 활용
par(family = "나눔고딕")
# mosaicplot(t(vote.region.commons), col = gray.2, main = "품관촌민의 지역별 찬반", xlab = "지역", ylab = "찬반")
mosaicplot(t(vote.region.commons), col = rainbow.2, main = "품관촌민의 지역별 찬반", xlab = "지역", ylab = "찬반")

충청도
관료들의 찬반과 품관촌민의 찬반이 다른 곳.
kable(format(vote.chung.class, big.mark = ","), caption = "충청도 사례", align = "r")
충청도 사례
찬성 |
0 |
35 |
6,982 |
반대 |
2 |
26 |
14,013 |
kable(format(prop.table(vote.chung.class, margin = 2)*100, digits = 3, nsmall = 1), caption = "충청도 사례", align = "r")
충청도 사례
찬성 |
0.0 |
57.4 |
33.3 |
반대 |
100.0 |
42.6 |
66.7 |
막대그래프
par(family = "나눔고딕")
# barplot(prop.table(vote.chung.class, margin = 2), col = gray.2, ylim = c(0, 1.5), axes = FALSE)
barplot(prop.table(vote.chung.class, margin = 2), col = rainbow.2, ylim = c(0, 1.5), axes = FALSE)
axis(side = 2, at = c(0, 0.5, 1.0), labels = c("0", "50%", "100%"), las = 1)
title(main = "충청도의 계급별 찬반 비율")
# legend("topleft", inset = 0.05, fill = gray.2, legend = c("찬성", "반대"))
legend("topleft", inset = 0.05, fill = rainbow.2, legend = c("찬성", "반대"))
text(x = c(0.6, 1.85, 1.85, 3.1, 3.1), y = c(0.5, 0.3, 0.8, 0.15, 0.65), labels = format(c(2, 35, 26, 6982, 14013), big.mark = ","))

mosaicplot()
수효의 차이가 너무 커서 비교하기 어려움.
par(family = "나눔고딕")
# mosaicplot(t(vote.chung.class), col = gray.2, main = "", xlab = "계급", ylab = "찬반")
mosaicplot(t(vote.chung.class), col = rainbow.2, main = "", xlab = "계급", ylab = "찬반")
title(main = "충청도의 찬반")
