【问题标题】:How do I get pass the '<' not meaningful for factors error in R?如何通过'<'对R中的因子错误没有意义?
【发布时间】:2018-10-17 14:41:17
【问题描述】:

我对 R 真的很陌生,我正在尝试我的第一段代码,我认为只要我能通过这个错误,它就可以工作:

> EVP_Daily_Input = read.csv("C:\\Users\\Hicks\\Desktop\\EVP_Daily_Input.csv", sep =",")
> 
> TEST_SET_BEGIN <- "01/10/2018"
> 
> myTrainSet <- EVP_Daily_Input %>% filter(Date < TEST_SET_BEGIN)
Warning message:
In Ops.factor(Date, TEST_SET_BEGIN) : ‘<’ not meaningful for factors

提前致谢

【问题讨论】:

  • R subset by date的可能重复
  • 将来,提供数据样本会很有帮助,这样答案就不需要对其结构做出太多假设。

标签: r


【解决方案1】:

两步。首先,read.csv 自动将字符串列更改为因子。为避免这种情况,请执行以下操作:

EVP_Daily_Input = read.csv("C:\\Users\\Hicks\\Desktop\\EVP_Daily_Input.csv", sep =",", stringsAsFactors=FALSE)

然后,您需要将这些字符串转换为实际的日期格式:

EVP_Daily_Input$Date<- as.Date(EVP_Daily_Input$Date) 

(根据您的数据设置方式,您可能需要添加“format=”并指定日期格式。有关指定日期格式的更多信息,请参阅?strptime。)

对您的 TEST_SET_BEGIN 执行相同操作:

TEST_SET_BEGIN <- as.Date("2018/10/01")

现在你应该可以走了。祝你好运!

【讨论】:

  • 添加stringsAsFactors 可能无法解决问题,因为用户正在寻找使用二元运算符的子集。这将产生的唯一区别是,当强制到日期时,不需要as.character
  • 是的,但我认为这是避免因素的最佳做法,除非我们特别想要它们。这也是一个新的 R 用户不太可能知道的东西,所以我认为它值得包括在内。
猜你喜欢
  • 2015-08-12
  • 2018-08-07
  • 2013-08-05
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多