R、 时间变量作为因素。如何找到最接近某个时间的值?
我在Rstudio工作,我有一个因子变量“时间”。所以,我看到的一个值的例子可能是“10:17:38”。目标:我想找出数据集中哪个观测值最接近某个时间,比如说“09:58:13”。我怎样才能在Rstudio中做到这一点R、 时间变量作为因素。如何找到最接近某个时间的值?,r,date,time,R,Date,Time,我在Rstudio工作,我有一个因子变量“时间”。所以,我看到的一个值的例子可能是“10:17:38”。目标:我想找出数据集中哪个观测值最接近某个时间,比如说“09:58:13”。我怎样才能在Rstudio中做到这一点 我尝试将值“09:58:13”作为一个单独的变量添加,例如“Fixed_time”(所有观测值的值相同)。然后,我们的想法是创建一个新的变量,称之为差=固定时间,并找到“差”的最小绝对值。问题是,我从来没有设法得到一种格式,允许我从一个减去另一个。我尝试了as.POSIXct,它
我尝试将值“09:58:13”作为一个单独的变量添加,例如“Fixed_time”(所有观测值的值相同)。然后,我们的想法是创建一个新的变量,称之为差=固定时间,并找到“差”的最小绝对值。问题是,我从来没有设法得到一种格式,允许我从一个减去另一个。我尝试了as.POSIXct,它还将我不需要的今天的年、月和日添加到我的变量中。你能帮忙吗?谢谢 正如其他人已经提到的,示例数据集很重要 在不了解您的数据的情况下,我建议添加日期本身,以避免在日期变化(午夜)时出现问题 您可以根据需要更改以下代码。请注意,插入的一些代码行仅用于测试用例-请查看发生了什么
# --- Create some data ---
dat <- read.table(textConnection("date time observation
2019-11-01 15:01:32 100
2019-11-01 18:26:31 115
2019-11-01 10:17:38 51
2019-11-01 20:23:21 278"), header=TRUE)
dat
# --- set certain time ---
CertainTime <- "2019-11-01 09:58:13"
SmallestValue <- 86400 # seconds of one day
for(i in 1:4) {
ObservationTime <- paste(dat[i,1],dat[i,2])
diff <- difftime(CertainTime, ObservationTime, units = "secs")
print("-------------------")
print(CertainTime)
print(ObservationTime, max.levels=0)
print(paste("Index", i, "time diff ", diff, "to certain time."))
if(diff*(-1) < SmallestValue){
SmallestValue <- diff*(-1)
print("smaller value found")
print(SmallestValue)
SmallestValueindex <- i
}
}
print(SmallestValueindex)
print(SmallestValue)
# print oberservation data
print (paste ("Date:", dat[SmallestValueindex,1], "Time:", dat[SmallestValueindex,2], "Observation:", dat[SmallestValueindex,3]))
我不知道R,但是,看一小段代码来说明如何加载非固定时间值可能会有所帮助,因此很明显它们实际存储为什么数据类型。从您的问题来看,它们可能是字符串?我想知道您是否可以尝试将时间值转换为
difftime
类,然后运行一些代码来获取差异。如果您有一些练习数据,我可以对其进行一点讨论,并将我所说的内容编码出来。最简单的方法是:dput(head(data))
。然后,您只需将输出复制到您的帖子的编辑版本。
[1] "Date: 2019-11-01 Time: 10:17:38 Observation: 51"