【发布时间】:2023-03-15 13:25:02
【问题描述】:
我在 R 的数据框中有一列表示时间。
当我在列上调用 str() 函数时,它会说类似这样的内容
>str(df2$Time)
Factor w/ 1441 levels "","00:01","00:02","00:03",..: 1086 1096 1111 and so on
问题是我想将此列转换为字符串类型,这样如果时间小于 12:00,它应该被修改为字符串 "moring" ,如果时间在 12:00 和 6:00 之间,它是“日光”等等。
我想到的第一步是将这个向量转换为数据帧列的时间类型,所以我使用了chron函数。
我输入了以下命令,
>df2$Time<-chron(times=df2$Time,format=c('h:m'))
Error in convert.times(times., fmt) : format h:m may be incorrect
In addition: Warning message:
In is.na(out$s) : is.na() applied to non-(list or vector) of type 'NULL"
所以我猜我应该在格式中添加第二个参数,所以我尝试了以下方法:
df2$Time<-chron(time=df2$Time,format=c('h:m:s'))
但还是出现同样的错误
我知道这只是第一步,可能是我的方法也错了。谁能建议我如何将这些时间数据单元格转换为早上、晚上、晚上等。
非常感谢任何帮助。
【问题讨论】:
-
df2$Time是具有小时:分钟值的类型因子,例如06:00。使用df2$Time <- ifelse(as.numeric(sub("(\\d{1,2}):.*", "\\1", df2$Time)) < 6, "night", "day")将小时值night 交换,其他值与day交换。 -
@lukeA 这是一个不错的解决方案,您应该将其添加为答案。