我的问题是我正在尝试查看是否TimeA
出现在之前TimeB
所以我正在做
ifelse(timeA < timeb, 0, 1)
我得到:
1: In Ops.factor(TimeA, TimeB) : < not meaningful for factors.
那么如何转换我的时间格式以使其不再是一个因素?我当前的时间格式是 hh:mm:ss?
我的问题是我正在尝试查看是否TimeA
出现在之前TimeB
所以我正在做
ifelse(timeA < timeb, 0, 1)
我得到:
1: In Ops.factor(TimeA, TimeB) : < not meaningful for factors.
那么如何转换我的时间格式以使其不再是一个因素?我当前的时间格式是 hh:mm:ss?
您的答案听起来就在错误消息中:
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")
请记住,除非您可以以数字形式合理/有意义地表示您的数据,否则您无法合理/有意义地检查一个值是大于还是小于另一个值。