首页 > 解决方案 > R问题存储为因子R的日期列无法转换

问题描述

我已经从 Yahoo Finance 股票代码 GSPC 下载了 SP500 数据,并试图按年份对其进行过滤,但是 Date 列存储为 Factor,因此 R 无法对其进行过滤。谁能帮我转换一下?我尝试了多种解决方案,但没有任何效果。

到目前为止,我已经使用了加载的 lubridate 包并使用了以下代码,但是所有值都被替换为NA's.

as.Date(SP500$Date, format = "%m-%d-%Y") 

然后我使用了:SP500$Date <- ymd(SP500$Date, format = "%Y-%m-%d")代码,再次没有发生任何事情。(SP500是我存储数据的数据框的名称)

此外,尝试使用 justSP500$Date <- as.Date(SP500$Date)但 R 说不知道如何将其转换为日期。

任何帮助将非常感激!谢谢!

标签: r

解决方案


类只存在于编程语言的环境中。可能发生的情况是您的数据(可能是 .csv 文件?)factor在读取过程中被 R 解释为。

您在这里尝试做的所有事情都可以使用baseR 中的库来完成(这意味着您不需要导入任何东西)。

如果您正在处理日期:

df$date <- as.Date(df$date, format = "%Y-%m-%d")

如果您正在处理日期时间:

df$date <- as.POSIXct(df$date, format = "%Y-%m-%d %H:%M:%S")

(显然具体格式可能有所不同;见列表

有时,R 中的强制转换可能会显得很挑剔。该format参数有点难以容忍错误。我个人经常误认为-,或与导致操作引发错误/混为一谈。显然,如果您的数据中的格式不一致,则无法由您提供的具体描述的实例将导致s."%Y-%m-%d""%d-%m-%Y"formatNA

有时您的日期实际上是整数(例如20181111);在这种情况下,您可能需要提供'1970-01-01'给. 例如,如果您正在使用 for 循环遍历 s 的向量,R 将不会尊重传递的 s 的类并将它们转换为s。originas.Date()DateDateinteger

这听起来像是一个创可贴的解决方案,但是来自常见类型的类强制character通常写得很好;character当我不知道为什么我强制上课失败的原因时,我经常先发制人地强制对象。


推荐阅读