-1

我的问题是我正在尝试查看是否TimeA出现在之前TimeB所以我正在做

ifelse(timeA < timeb, 0, 1)

我得到:

1: In Ops.factor(TimeA, TimeB) : < not meaningful for factors.

那么如何转换我的时间格式以使其不再是一个因素?我当前的时间格式是 hh:mm:ss?

4

1 回答 1

2

您的答案听起来就在错误消息中:

1: In Ops.factor(TimeA, TimeB) : < not meaningful for factors.

factor为了比较, s 没有明确的数值。考虑:

factor("chicken") < factor("beef")
#[1] NA
#Warning message:
#In Ops.factor(factor("chicken"), factor("beef")) :
#  < not meaningful for factors

您正在比较数学上无法比较的东西(尽管如果您问我,鸡肉显然是更美味的肉)。如果您按照@Metrics 的建议比较未格式化的时间值,那么您实际上是在重复与上述相同的问题。

factor("09:05:10") < factor("09:05:20")
#[1] NA
#Warning message:
#In Ops.factor(factor("09:05:10"), factor("09:05:20")) :
#  < not meaningful for factors

但是,如果您将值正式指定为日期/时间值(本质上是数值),那么您就很贴心了:

as.POSIXct("09:05:10",format="%H:%M:%S") < as.POSIXct("09:05:20","%H:%M:%S")

请记住,除非您可以以数字形式合理/有意义地表示您的数据,否则您无法合理/有意义地检查一个值是大于还是小于另一个值。

于 2013-08-12T01:13:22.433 回答