如何在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
相关产品推荐
相关产品推荐

