使用R的tidyquant包计算个股最低调整股价遇问题求助
问题分析与解决方案
嘿,我来帮你排查这个问题~首先明确一点:你用的dplyr分组计算逻辑本身是正确的,问题出在一个容易忽略的细节上,咱们一步步拆解:
1. 核心错误:日期参数格式不对
你在tq_get里写的from = 1980-01-01和to = 2018-05-05没有加引号,R会把它当成算术表达式计算(比如1980-01-01会被算成1980-1-1=1978),而不是识别为日期字符串。这会导致tq_get下载的股票数据范围完全不符合预期,甚至可能数据异常,间接让你误以为分组计算出了问题。
2. 修正后的完整代码
只需要给日期加上引号,再运行你的分组逻辑就能得到正确结果:
library(tidyquant) # 修正日期参数为字符串格式 data <- c("AAPL", "MMM") %>% tq_get(get = "stock.prices", from = "1980-01-01", to = "2018-05-05") # 你的dplyr用法是对的,分组计算每家公司的最低调整股价 data_with_lowest <- data %>% group_by(symbol) %>% mutate(lowest = min(adjusted, na.rm = TRUE)) %>% ungroup() # 可选操作,取消分组避免后续代码受分组状态影响 # 验证结果 head(data_with_lowest)
3. 额外验证建议
如果修正后还是有疑问,可以先检查下载的数据是否正常:
- 用
count(data, symbol)查看两家公司的记录数是否符合时间范围的预期 - 用
filter(data, symbol == "AAPL") %>% summarise(min_adjusted = min(adjusted, na.rm = TRUE))单独计算AAPL的最低值,和新增列的lowest对比,确认分组计算生效
内容的提问来源于stack exchange,提问作者Tall Measure
相关产品推荐
相关产品推荐

