我有一个如下所示的数据框
"SERIAL_No.","DATE_","TIME_",
"13606855","2011/08/02","14:15"
因此,具有特定序列号的人在一天的不同时间进行某些活动,并且有一年的数据可用。我想选择一个与上午5点后的第一个条目相对应的条目。通过这种方式,我将为特定日期提供每个序列号的单个条目。 我试过以下但我不知道这是否会起作用:
df <- df[df$TIME_ >"5:00", ]
但是这将在凌晨5点之后选择所有条目。我不知道如何实现这一目标。请帮助,我是R的新手,我想学习这个强大的工具。
答案 0 :(得分:0)
此链接(Compare time in R)中的答案有一个很好的功能,您可以使用to.time
包使用chron
。这对比较两次之间的差异很有用。
这是一种方法:
# create toy data
set.seed(1)
x <- data.frame(SERIAL_No = sample(5, 10, replace = TRUE),
Date = Sys.Date() - 1:10,
Time = format(Sys.time() - sample(1000, 10), "%H:%M"))
# Define helper function from link above
library(chron)
to.times <- function(x) times(paste0(x, ":00"))
# Change class of Time column to times
x$Time <- to.times(x$Time)
# Isolate observations past 00:00 (can switch to 5:00 when you use your data)
x <- x[x$Time > to.times("00:00"), ]
# Find observation closest to 00:00 for each serial number
do.call(rbind, lapply(split(x, x$SERIAL_No),
function(a) a[which.min(a$Time - to.times("00:00")), ]))