@@ -1086,10 +1086,11 @@ rm(链, 周朝年号, 简, 列甲, 限甲, 列乙, 限乙, 列丙, 限丙, 周
1086
1086
1087
1087
fwrite(牍, paste0(.蜀道书轩, '周朝年号.csv'))
1088
1088
1089
+ ####################################################################################
1089
1090
## 战国
1090
1091
天朝 <- '战国'
1091
1092
链 <- c('https://www.cidianwang.com/nianhao/zhanguo_ebb8f.htm', paste0('https://www.cidianwang.com/nianhao/zhanguo_ebb8f_', 1:12, '.htm'))
1092
-
1093
+ # 牒
1093
1094
战国年号 <- plyr::ldply(1:length(链), function(迭) {
1094
1095
椠 <- 链[迭] %>%
1095
1096
read_html() %>%
@@ -1105,6 +1106,74 @@ fwrite(牍, paste0(.蜀道书轩, '周朝年号.csv'))
1105
1106
版 <- matrix(椠, ncol = 2, byrow = TRUE, dimnames = list(NULL, c('年份', '明细')))
1106
1107
}, .progress = 'text')
1107
1108
1109
+
1110
+ 简 <- strsplit(战国年号$明细, ',|:')
1111
+ 列甲 <- 简 %>%
1112
+ lapply(length) %>%
1113
+ unlist()
1114
+ 限甲 <- 列甲 %>%
1115
+ max()
1116
+
1117
+ 列乙 <- lapply(简, function(迭) grep('在位皇帝', 迭)) %>%
1118
+ unlist()
1119
+ 限乙 <- 列乙 %>%
1120
+ max()
1121
+
1122
+ 牍 <- lapply(1:length(简), function(迭甲) {
1123
+ 列乙[迭甲] = grep('在位皇帝', 简[[迭甲]])
1124
+ 差乙 = 限乙 - 列乙[迭甲]
1125
+ 空乙 = rep(NA, 差乙)
1126
+ if (差乙 > 0) {
1127
+ 牍 <- c(简[[迭甲]][1:(列乙[[迭甲]] - 差乙)], 空乙, 简[[迭甲]][列乙[[迭甲]]:列甲[[迭甲]]])
1128
+ } else {
1129
+ 牍 <- 简[[迭甲]]
1130
+ }})
1131
+
1132
+ 列乙 <- lapply(简, function(迭) grep('在位皇帝', 迭)) %>%
1133
+ unlist()
1134
+
1135
+ 列丙 <- lapply(牍, function(迭) grep('年号', 迭)) %>%
1136
+ unlist()
1137
+ 限丙 <- 列丙 %>%
1138
+ max()
1139
+
1140
+ 牍 <- lapply(1:length(牍), function(迭甲) {
1141
+ 列丙[迭甲] = grep('年号', 牍[[迭甲]])
1142
+ 差丙 = 限丙 - 列丙[迭甲]
1143
+ 空丙 = rep(NA, 差丙)
1144
+ if (差丙 > 0) {
1145
+ 牍 <- c(牍[[迭甲]][1:(列丙[[迭甲]] - 差丙)], 空丙, 牍[[迭甲]][列丙[[迭甲]]:限丙])
1146
+ } else {
1147
+ 牍 <- 牍[[迭甲]]
1148
+ }
1149
+ 牍 <- c(牍, rep(NA, 限甲 - length(牍)))
1150
+ }) %>%
1151
+ unlist %>%
1152
+ matrix(ncol = 限甲, byrow = TRUE, dimnames = list(
1153
+ NULL, c('参数甲', '干支', '参数乙', '生肖', '参数丙', '朝代甲', '朝代乙', '朝代丙', '参数丁', '在位皇帝甲',
1154
+ '在位皇帝乙', '参数戊', '年号甲', '年号乙')))
1155
+
1156
+ 战国年号乙 <- 战国年号 %>%
1157
+ as_tibble %>%
1158
+ mutate(
1159
+ 年份乙 = 年份 %>%
1160
+ str_extract_all('[0-9]') %>%
1161
+ plyr::ldply(., function(迭) {
1162
+ paste0(迭, collapse = '') %>%
1163
+ as.numeric() %>%
1164
+ cnum::num2c(lang = 'sc')}) %>%
1165
+ unlist(),
1166
+ 年份 = if_else(substr(年份, 1, 3) == '公元前', paste0('公元前', 年份乙, '年'), 年份乙) %>%
1167
+ factor,
1168
+ 年份乙 = -cnum::c2num(年份乙))
1169
+
1170
+ 牍 <- cbind(战国年号乙[c('年份', '年份乙')], 牍[, -grep('参数', colnames(牍))]) %>%
1171
+ as_tibble() %>%
1172
+ dplyr::mutate_if(is.character, factor)
1173
+ rm(链, 战国年号, 简, 列甲, 限甲, 列乙, 限乙, 列丙, 限丙, 战国年号乙)
1174
+
1175
+ 牍 %>% llply(., function(牒) data.frame(t(matrix(牒)))) %>% rbindlist()
1176
+
1108
1177
```
1109
1178
1110
1179
``` {r 读取朝代年号, results = 'asis', error = TRUE}
0 commit comments