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

如何在R中用tidyquant筛选每年3月31日的股价数据?

筛选每年3月31日的股价数据

方法1:手动指定目标日期筛选

如果已经明确要筛选的日期列表,可直接将日期转换为R的Date类型,再通过dplyr::filter()匹配:

library(tidyverse)
library(tidyquant)

# 假设股价数据存储在stock_data中,日期列名为date(tidyquant下载数据的默认列名)
target_dates <- as.Date(c(
  "2013-03-31", "2014-03-31", "2015-03-31",
  "2016-03-31", "2017-03-31", "2018-03-31",
  "2019-03-31", "2020-03-31", "2021-03-31",
  "2022-03-31"
))

# 执行筛选
filtered_data <- stock_data %>%
  filter(date %in% target_dates)

方法2:动态生成目标日期(更灵活)

若需要扩展年份,手动输入日期效率低,可使用seq.Date()动态生成2013-2022年的3月31日:

# 动态生成每年3月31日的日期序列
target_dates <- seq.Date(
  from = as.Date("2013-03-31"),
  to = as.Date("2022-03-31"),
  by = "year"
)

# 筛选数据
filtered_data <- stock_data %>%
  filter(date %in% target_dates)

处理节假日/周末无数据的情况

如果3月31日恰逢周末或股市休市,数据中不会有当天记录,可筛选3月31日及之前最近的交易日:

library(lubridate)

# 生成原始目标日期
target_dates <- seq.Date(as.Date("2013-03-31"), as.Date("2022-03-31"), by = "year")

# 调整每个日期为最近的前一个交易日
adjusted_dates <- map_dbl(target_dates, function(x) {
  max(stock_data$date[stock_data$date <= x])
}) %>% as.Date(origin = "1970-01-01")

# 筛选调整后的日期数据
filtered_data <- stock_data %>%
  filter(date %in% adjusted_dates)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:50:23