如何按公司分组将日度股价数据转换为周度数据并提取每周最后值
R语言解决方案
以下代码基于tidyverse生态实现需求,适配你提供的tibble数据结构:
1. 加载依赖包
# 未安装依赖先执行:install.packages(c("tidyverse", "lubridate")) library(tidyverse) library(lubridate)
2. 核心计算逻辑
result <- data %>% # 生成日期维度分组字段,week_start参数可调整周起始日:1=周一、7=周日 mutate( year = year(tarih), month = month(tarih), week = week(tarih, week_start = 1) ) %>% # 按个股、年、月、周多层分组 group_by(stock_code, year, month, week) %>% # 提取每组内日期最大的记录,即对应周的最后一个交易日 filter(tarih == max(tarih)) %>% ungroup() %>% # 调整输出格式匹配要求 mutate( # 日期转为日.月.年格式 tarih = format(tarih, "%d.%m.%Y"), # 价格保留两位小数,用逗号做小数点 adj_close_price = format(round(adj_close_price, 2), nsmall = 2, decimal.mark = ",") ) %>% # 按个股倒序、日期倒序排序,和示例输出顺序一致 arrange(desc(stock_code), desc(tarih)) %>% # 保留需要的输出列 select(tarih, stock_code, adj_close_price)
3. 结果导出/查看
# 查看结果前几行 head(result) # 导出为制表符分隔的文本文件,匹配示例格式 write_delim(result, "周度收盘价结果.txt", delim = "\t")
补充说明
如果你的周度定义和默认规则不同,仅需要调整week()函数中的week_start参数即可:比如要把周五作为周最后一个交易日,设置week_start = 6即可。
内容的提问来源于stack exchange,提问作者cey
相关产品推荐
相关产品推荐

