R中具有时间条件的子集数据集

Ameerah

我在example.txt中有一个像这样的数据集

"09/Jan/2016" "05:00:22" "304" 449
"09/Jan/2016" "07:00:12" "304" 449
"09/Jan/2016" "10:00:02" "200" 10575
"09/Jan/2016" "11:00:03" "304" 449
"09/Jan/2016" "13:00:03" "304" 449
"09/Jan/2016" "20:00:03" "304" 449 
"09/Jan/2016" "23:00:03" "304" 450 
"10/Jan/2016" "00:00:03" "304" 449 
"10/Jan/2016" "03:00:03" "304" 449 
"10/Jan/2016" "04:00:03" "304" 449 

我可以在R中运行代码前六个小时对数据集进行子集化吗?例如,我在1月10日4:15打开并运行我的代码,因此我需要数据集中的子集,例如

"09/Jan/2016" "23:00:03" "304" 450 
"10/Jan/2016" "00:00:03" "304" 449 
"10/Jan/2016" "03:00:03" "304" 449 
"10/Jan/2016" "04:00:03" "304" 449 

我应该使用什么功能?以及如何使用?

罗纳克·沙

假设4列,你有,有名字V1V2V3V4和数据帧是df

您可以base R通过

mergedDateTime <- as.POSIXct(paste(df$V1, df$V2), format = "%d/%b/%Y %H:%M:%S")
df[(Sys.time() - 6*60*60) <  mergedDateTime & Sys.time() > mergedDateTime, ]

对于给定的示例,这可以作为

x <- "01/10/2016 04:15:00"
mergedDateTime <- as.POSIXct(paste(df$V1, df$V2), format = "%d/%b/%Y %H:%M:%S")
df[(as.POSIXct(x, format = "%m/%d/%Y %H:%M:%S") - 6*60*60) <  mergedDateTime & 
                as.POSIXct(x, format = "%m/%d/%Y %H:%M:%S") > mergedDateTime, ]


#        V1       V2      V3  V4
#7  09/Jan/2016 23:00:03 304 450
#8  10/Jan/2016 00:00:03 304 449
#9  10/Jan/2016 03:00:03 304 449
#10 10/Jan/2016 04:00:03 304 449

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章