You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)), ]

原代码异常原因

  1. t4 <- t3[unique(t3$N),]逻辑错误:unique(t3$N)返回的是去重后的总统序号值,不是行索引,直接当作行号取行会错误丢弃大量合法数据,是你数据大幅缩减的核心原因
  2. t5 <- subset(t4,!is.na(President))会误删部分合并单元格导致的President列空值的合法任期条目,进一步造成数据损耗

之前尝试的正则问题

  • strsplit的正则表达式中(? = [0-9])的等号前多了空格,导致正则匹配失效
  • grep写法中[[:numeric:]]为错误写法,正确的数字类匹配符为[[:digit:]],且{2, }的大括号内多了空格,无法正确匹配

内容的提问来源于stack exchange,提问作者Carlos Garibotto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 00:48:04