R 基于时间变量的数据帧子集

R 基于时间变量的数据帧子集,r,date,datetime,time,subset,R,Date,Datetime,Time,Subset,我有以下数据帧,它已经是更大数据帧的子集: Time X.N2O._ppm 1 15/05/2015 13:30:07.291 0.03941801 2 15/05/2015 13:30:08.307 0.01014003 3 15/05/2015 13:30:09.323 0.02577801 4 15/05/2015 13:30:10.338 0.02554231 5

我有以下数据帧,它已经是更大数据帧的子集:

                            Time X.N2O._ppm
    1    15/05/2015 13:30:07.291 0.03941801
    2    15/05/2015 13:30:08.307 0.01014003
    3    15/05/2015 13:30:09.323 0.02577801
    4    15/05/2015 13:30:10.338 0.02554231
    5    15/05/2015 13:30:11.354 0.02489800
    6    15/05/2015 13:30:12.370 0.02417584
    7    15/05/2015 13:30:13.386 0.02489115
    8    15/05/2015 13:30:14.402 0.02524912
    9    15/05/2015 13:30:15.417 0.02556182
    10   15/05/2015 13:30:16.433 0.02574274
我正在尝试基于时间变量进行子集,但出现以下错误:

    subtime = subset(datasubcolrow, "Time" < 15/05/2015 13:30:15.417)
    Error: unexpected numeric constant in "subtime = subset(datasubcolrow, "Time" < 15/05/2015 13"
我是否需要将其转换为日期格式,以及如何进行转换

谢谢


Rory

您可以将“时间”列更改为“POSIXct”类,然后再更改子集

datasubcolrow$Time <- as.POSIXct(datasubcolrow$Time, format='%d/%m/%Y %H:%M:%OS')

subset(datasubcolrow, Time < as.POSIXct('15/05/2015 13:30:15.417', 
              format='%d/%m/%Y %H:%M:%OS'))
数据
您可能需要通过15/05/2015 13:30:15.417作为日期格式,@Pascal这是我的想法,但我发现很难弄清楚如何从数字转换为日期谢谢-这对子集非常有效。然而,当我使用sapplydatasubcolrow时,模式时间仍然是数字的-我如何将其永久转换?@RoryShaw您可以将时间分配给as.POSIXct。i、 e.datasubcolrow$时间会打勾-但只有一个问题。我已经按照您上面的建议转换了可变时间,但是现在时间列中填充了NA。有什么想法吗?@RoryShaw使用您的示例,我没有得到任何NAs,您能发布您提供的示例的dput输出吗?我将转换应用于整个数据集,其中包括与时间相同的列中的一些无意义数据
datasubcolrow$Time <- as.POSIXct(datasubcolrow$Time, format='%d/%m/%Y %H:%M:%OS')

subset(datasubcolrow, Time < as.POSIXct('15/05/2015 13:30:15.417', 
              format='%d/%m/%Y %H:%M:%OS'))
 datasubcolrow <- structure(list(Time = c("15/05/2015 13:30:07.291",
 "15/05/2015 13:30:08.307", 
 "15/05/2015 13:30:09.323", "15/05/2015 13:30:10.338", 
"15/05/2015 13:30:11.354", 
"15/05/2015 13:30:12.370", "15/05/2015 13:30:13.386", 
"15/05/2015 13:30:14.402", 
"15/05/2015 13:30:15.417", "15/05/2015 13:30:16.433"), 
X.N2O._ppm = c(0.03941801, 
0.01014003, 0.02577801, 0.02554231, 0.024898, 0.02417584, 0.02489115, 
0.02524912, 0.02556182, 0.02574274)), .Names = c("Time", "X.N2O._ppm"
), class = "data.frame", row.names = c("1", "2", "3", "4", "5", 
"6", "7", "8", "9", "10"))