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

R语言按月份筛选数据:brexit_polls数据集四月起始日期民意调查统计问题

解决brexit_polls四月民意调查统计的问题

嘿,我来帮你搞定这个问题!不用纠结tibbletime加载失败或者复杂的正则表达式,其实用基础R或者常用的tidyverse工具就能轻松解决,而且完全不需要额外安装有问题的包。

方法1:用tidyverse的lubridate(推荐,直观简洁)

dslabs包通常和tidyverse搭配使用,而lubridate是tidyverse里专门处理日期的工具,用它提取月份再筛选超方便:

# 加载必要的包
library(dslabs)
library(tidyverse)

# 加载brexit_polls数据
data(brexit_polls)

# 统计四月的民意调查数量
april_polls_count <- brexit_polls %>%
  # 从startdate中提取月份(返回1-12的数字)
  mutate(poll_month = month(startdate)) %>%
  # 筛选月份为4的行
  filter(poll_month == 4) %>%
  # 统计行数
  nrow()

# 查看结果
print(april_polls_count)

这个方法的好处是直接针对日期类型操作,不需要把日期转成字符串,避免了正则匹配可能出现的格式问题。

方法2:纯基础R实现(无需额外包)

如果你不想加载tidyverse,用基础R的函数也能完成:

# 加载数据
library(dslabs)
data(brexit_polls)

# 确保startdate是日期格式(如果原始数据不是的话)
brexit_polls$startdate <- as.Date(brexit_polls$startdate)

# 筛选四月的调查并统计数量
april_polls_count <- nrow(subset(brexit_polls, format(startdate, "%m") == "04"))

# 查看结果
print(april_polls_count)

这里format(startdate, "%m")会把日期转换成两位的月份字符串(比如四月就是"04"),然后用subset筛选后,nrow直接统计数量,完全依赖基础R,肯定能运行。

关于你之前尝试的问题说明

  • 你用的regex(startdate,"....-04-..")不对,因为dplyr里没有直接的regex函数,而且如果startdate是日期类型(不是字符串),正则匹配是无效的。如果非要用正则,得先把日期转成字符串再用str_detect,但这种方法不如上面的直观,不推荐:
# 不推荐的正则方法,仅作参考
april_polls_regex <- brexit_polls %>%
  filter(str_detect(as.character(startdate), "^\\d{4}-04-\\d{2}")) %>%
  nrow()
  • 至于tibbletime加载失败,大概率是依赖包版本冲突或者安装不完整,但其实根本不需要这个包,上面的两种方法已经足够解决问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 07:54:09