R语言日期格式转换及筛选六月数据报错求助
问题解决方法
错误原因
- 你将转换后的日期单独存成了
better_date数据框,但管道操作的上下文是原数据框df,无法直接引用外部的better_date; month()函数需要接收日期向量作为参数,而你传入的是整个better_date数据框,导致R无法将其转换为POSIXlt类型,触发报错。
修正后的代码
首先确保加载lubridate包(未安装的话先执行install.packages("lubridate")):
library(lubridate)
将转换后的日期直接整合到原数据框,再执行管道操作:
# 把转换后的日期添加到原df中 df <- df |> mutate(Date_clean = as.Date(Date, origin = '1899-12-30')) # 管道筛选与处理 me_ff <- df |> filter(month(Date_clean) == 6) |> mutate(sorting_date = Date_clean %m+% months(1)) |> select(ticker, sorting_date, me_ff = Mkt_cap)
替代方案(不修改原数据框)
如果不想改动原数据框,也可以在管道内直接完成日期转换:
me_ff <- df |> mutate(Date_clean = as.Date(Date, origin = '1899-12-30')) |> filter(month(Date_clean) == 6) |> mutate(sorting_date = Date_clean %m+% months(1)) |> select(ticker, sorting_date, me_ff = Mkt_cap)
内容的提问来源于stack exchange,提问作者a_p27
相关产品推荐
相关产品推荐

