阿璇tian 发表于 2018-11-16 14:38 
非常感谢老师,我按照您的方法把字符拆开了,但是对b这列时间变量跟12点进行比较,这么着写还是不对,怎么 ...
你好,as.hms函数返回的结果实际上是以秒为单位存储的时间!所以12点就是12小时乘以60分钟乘以60秒,具体你可以参考?hms的说明文件,直接写《=“12:00:00”程序识别不了
> as.hms(tm,tz = "GMT") #这里我随便写了一个时间,用as.hms转化了一下
08:39:00
> class(as.hms(tm,tz = "GMT")) #查看它的类型,发现是difftime,可以以秒为基础加减乘除运算,当日0点0分0秒记为0,之后比这个时间多几秒记为多少秒
[1] "hms" "difftime"
> as.hms(tm,tz = "GMT")+0 #直接加0会显示计算结果,发现这个时间比初始多了31140秒
Time difference of 31140 secs
> as.hms(tm,tz = "GMT") <= 12*60*60 #所以按照这个逻辑,和中午12点对应的秒数进行逻辑比较,结果是TRUE
[1] TRUE
> as.hms(tm,tz = "GMT") <= as.hms("11:58:12") #如果觉得上面那么写不直观,如果要比较更复杂的时间,不想一个个算有多少秒,也可以这样子
[1] TRUE
同样的你直接输入一个数字,用as.hms也可以转化为时间
> as.hms(8900)
02:28:20
> df <- as.data.frame(as.hms(8900)) #把as.hms的结果以表格方式存储不影响它后续计算
>df[[1]]
02:28:20
> df[[1]] <= 12*60*60
[1] TRUE