R tidyverse中筛选每年1月1日数据失败,day(date)==1为何不生效?
问题原因分析
核心原因:1月1日是美国法定节假日(新年),美股当天休市,没有交易数据
具体细节:
- 标普500(^GSPC)的行情数据仅记录交易日的信息,非交易日(包括法定节假日、周末)不会生成数据条目。
- 你用
month(date) == 1, day(date) == 1筛选时,这些日期基本都是休市日,数据中根本不存在对应行,因此返回0结果。 - 改为1月2日这类日期时,若当天不是周末或其他节假日,通常是新年后的首个交易日,所以能正常筛选出数据。
你可以用以下代码验证1月的所有交易日,确认是否存在1月1日的记录:
df %>% filter(month(date) == 1) %>% pull(date) %>% unique()
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

