R,随时间变化作为因子。如何找到最接近某个时间的值?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R,随时间变化作为因子。如何找到最接近某个时间的值?相关的知识,希望对你有一定的参考价值。
我正在Rstudio中工作,并且有一个因子变量“ Time”。因此,我看到的值的一个示例可能是“ 10:17:38”。目标:我想找出数据集中哪个观测值最接近某个时间,例如“ 09:58:13”。如何在Rstudio中做到这一点?
我已经尝试将值“ 09:58:13”作为单独的变量添加,例如“ Fixed_time”(所有观察值均相同)。然后,想法是通过说出差= Time-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]))
最后一行代码的输出:
[1] "Date: 2019-11-01 Time: 10:17:38 Observation: 51"
以上是关于R,随时间变化作为因子。如何找到最接近某个时间的值?的主要内容,如果未能解决你的问题,请参考以下文章