如何用R(dplyr)从CSV数据框剔除指定年份及股票代码?
用dplyr处理股票数据的正确代码
先处理日期格式(如果未转换)
如果你的Data列还不是标准日期类型,先转成日期格式,方便后续提取年份:
library(dplyr) library(lubridate) base.final <- base.final %>% mutate(Data = ymd(Data)) # 若日期格式是日-月-年,改用dmy(),根据实际数据格式调整
剔除指定年份和股票代码
假设你要删除的股票代码存放在一个向量里,比如remove_tickers <- c("XXX", "YYY"),执行以下代码完成过滤:
# 定义要剔除的年份和股票代码 exclude_years <- c(2008, 2009, 2018) remove_tickers <- c("TICKER1", "TICKER2") # 替换成你实际要删除的股票代码 # 过滤数据 base.final <- base.final %>% filter(year(Data) %notin% exclude_years, Ativo %notin% remove_tickers)
原代码报错原因
你写的base.final[base.final$Data!="2008","2009", "2018",]存在两个问题:
- 数据框索引语法错误:行筛选需要传入一个逻辑向量,你直接传入多个字符串,R无法解析这种格式。
- 日期匹配逻辑错误:如果
Data是完整日期(如2008-01-01),直接和字符串"2008"比较会完全不匹配,必须先提取年份再做判断。
内容的提问来源于stack exchange,提问作者erundule
相关产品推荐
相关产品推荐

