R语言爬取秘鲁总统列表后筛选N列小数行减少信息丢失方案
可行筛选方案
你需要的核心逻辑是仅排除N列带小数点后缀的行,不要做额外的去重、空值筛选即可保留84行有效数据,完整代码如下:
library(dplyr) library(rvest) presid <- read_html("https://en.wikipedia.org/wiki/List_of_presidents_of_Peru") %>% html_nodes("table") %>% .[3] %>% html_table(header = NA, trim = T) t3 <- presid[[1]] # 仅筛选N列不含小数点的行,排除带.5/.6等小数后缀的临时/代理总统条目 t_final <- t3[!grepl("\\.\\d+", as.character(t3$N)), ]
原代码异常原因
t4 <- t3[unique(t3$N),]逻辑错误:unique(t3$N)返回的是去重后的总统序号值,不是行索引,直接当作行号取行会错误丢弃大量合法数据,是你数据大幅缩减的核心原因t5 <- subset(t4,!is.na(President))会误删部分合并单元格导致的President列空值的合法任期条目,进一步造成数据损耗
之前尝试的正则问题
- strsplit的正则表达式中
(? = [0-9])的等号前多了空格,导致正则匹配失效 - grep写法中
[[:numeric:]]为错误写法,正确的数字类匹配符为[[:digit:]],且{2, }的大括号内多了空格,无法正确匹配
内容的提问来源于stack exchange,提问作者Carlos Garibotto
相关产品推荐
相关产品推荐

