Data

원자료는 세종실록, 요약표는 오기수 교수의 논문에서.

region class class.2 vote counts
서울 대신 등 관료 찬성 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 = ","))
찬성 반대
98,657 74,149
kable(t(as.matrix(format(tbl.vote, big.mark = ","))), align = rep("r", 2))
찬성 반대
98,657 74,149
kable(t(as.table(format(tbl.vote, big.mark = ","))), align = rep("r", 2))
찬성 반대
98,657 74,149
pander(format(prop.table(tbl.vote)*100, digits = 3, nsmall = 1), caption = "전체 찬반(%)")
찬성 반대
57.1 42.9

원형그래프

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 = "계급별 찬반")
계급별 찬반
대신 등 수령 3품이하현직 3품이하전직 품관촌민
찬성 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 = "계급별 찬반(%)")
계급별 찬반(%)
대신 등 수령 3품이하현직 3품이하전직 품관촌민
찬성 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 = "서울의 찬반")
서울의 찬반
대신 등 수령 3품이하현직
찬성 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 = "서울의 찬반(%)")
서울의 찬반(%)
대신 등 수령 3품이하현직
찬성 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")
충청도 사례
대신 등 3품이하전직 품관촌민
찬성 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")
충청도 사례
대신 등 3품이하전직 품관촌민
찬성 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 = "충청도의 찬반")