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

如何在R中统计中国股市各月交易日数并找出最少交易日的年月及数值?

解决中国股市年月交易日统计及最小值查找问题

没问题,这个需求用R的dplyr和lubridate包就能轻松搞定,我给你一步步拆解操作:

步骤1:准备工作(确保日期格式正确)

首先得确认你的date列是标准的日期类型,如果原始数据里是字符串格式,先转换一下:

# 假设你的数据框名为stock_data
stock_data$date <- as.Date(stock_data$date)

步骤2:加载必要的工具包

我们需要用dplyr做分组统计,lubridate处理日期格式,先加载它们:

library(dplyr)
library(lubridate)

步骤3:统计各年月的交易日数量

这里有两种常用的分组方式,选你习惯的就行:

方式一:用lubridate的floor_date生成年月标识

把每个日期截断到当月第一天,以此作为分组依据:

monthly_trading_stats <- stock_data %>%
  # 生成年月分组标识(比如1995-01-01代表1995年1月)
  mutate(year_month = floor_date(date, "month")) %>%
  # 按年月分组
  group_by(year_month) %>%
  # 统计每组的行数(即交易日数量)
  summarise(trading_days = n()) %>%
  # 取消分组状态
  ungroup()

方式二:用format生成"YYYY-MM"格式的年月字符串

直接把日期转换成1995-01这样的字符串,分组更直观:

monthly_trading_stats <- stock_data %>%
  mutate(year_month = format(date, "%Y-%m")) %>%
  group_by(year_month) %>%
  summarise(trading_days = n()) %>%
  ungroup()

步骤4:找出交易日最少的年月

用min()函数定位最小值,再筛选出对应的行(如果有多个年月交易日数量相同且都是最小值,会全部列出):

min_trading_record <- monthly_trading_stats %>%
  filter(trading_days == min(trading_days))

# 查看结果
print(min_trading_record)

举个例子,运行后你会得到类似这样的输出:

# A tibble: 1 × 2
  year_month trading_days
  <chr>             <int>
1 2020-01              17

这样就轻松搞定了统计和查找的需求~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:41:40