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

R语言getSymbol()设periodicity为weekly时日期错误的求助

解决R语言获取港股周度数据起始日期为非交易日的问题

针对你遇到的getSymbols返回周度数据起始日期为2012-09-02(周日,非交易日)的问题,提供以下三种可行解决方法:

方法1:直接筛选目标日期范围的数据

获取数据后,利用xts对象的日期索引特性,直接保留2012-09-03及之后的行:

tickers <- c("0011.HK", "1299.HK", "1083.HK", "0823.HK", "0669.HK", "0992.HK")

portfolioPrices <- NULL
for (Ticker in tickers)
  portfolioPrices <- cbind(portfolioPrices,
                           getSymbols(Ticker, from = "2012-09-01", 
                                      to = "2022-08-31", 
                                      periodicity = "weekly", 
                                      auto.assign=FALSE)[, 4])
colnames(portfolioPrices) <- c("HSBC", "AIA", "TG", "LinkReit", "Techronic", "Lenovo")

# 筛选2012-09-03及之后的数据
portfolioPrices <- portfolioPrices["2012-09-03/"]
portfolioPrices

方法2:先取日度数据再转换为周度(确保日期为交易日)

先获取日度数据,再通过to.weekly手动转换为周度数据,指定取每周最后一个交易日的收盘价作为周度数据,避免非交易日日期:

tickers <- c("0011.HK", "1299.HK", "1083.HK", "0823.HK", "0669.HK", "0992.HK")

portfolioPrices <- NULL
for (Ticker in tickers) {
  # 获取日度收盘价数据
  daily_data <- getSymbols(Ticker, from = "2012-09-01", 
                           to = "2022-08-31", 
                           auto.assign=FALSE)[, 4]
  # 转换为周度数据,索引设为每周最后一个交易日
  weekly_data <- to.weekly(daily_data, indexAt = "lastof")[, 4]
  portfolioPrices <- cbind(portfolioPrices, weekly_data)
}
colnames(portfolioPrices) <- c("HSBC", "AIA", "TG", "LinkReit", "Techronic", "Lenovo")
portfolioPrices

方法3:直接修改getSymbols的起始日期

如果确认2012-09-03为第一个目标交易日,可直接将from参数设为该日期,跳过之前的非交易日:

tickers <- c("0011.HK", "1299.HK", "1083.HK", "0823.HK", "0669.HK", "0992.HK")

portfolioPrices <- NULL
for (Ticker in tickers)
  portfolioPrices <- cbind(portfolioPrices,
                           getSymbols(Ticker, from = "2012-09-03", 
                                      to = "2022-08-31", 
                                      periodicity = "weekly", 
                                      auto.assign=FALSE)[, 4])
colnames(portfolioPrices) <- c("HSBC", "AIA", "TG", "LinkReit", "Techronic", "Lenovo")
portfolioPrices

说明

方法2的适用性最强,因为它完全基于交易日数据生成周度结果,不会出现非交易日的索引日期;方法1和3则更直接,适合已知目标起始日期的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:50:40