Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R、 时间变量作为因素。如何找到最接近某个时间的值?_R_Date_Time - Fatal编程技术网

R、 时间变量作为因素。如何找到最接近某个时间的值?

R、 时间变量作为因素。如何找到最接近某个时间的值?,r,date,time,R,Date,Time,我在Rstudio工作,我有一个因子变量“时间”。所以,我看到的一个值的例子可能是“10:17:38”。目标:我想找出数据集中哪个观测值最接近某个时间,比如说“09:58:13”。我怎样才能在Rstudio中做到这一点 我尝试将值“09:58:13”作为一个单独的变量添加,例如“Fixed_time”(所有观测值的值相同)。然后,我们的想法是创建一个新的变量,称之为差=固定时间,并找到“差”的最小绝对值。问题是,我从来没有设法得到一种格式,允许我从一个减去另一个。我尝试了as.POSIXct,它

我在Rstudio工作,我有一个因子变量“时间”。所以,我看到的一个值的例子可能是“10:17:38”。目标:我想找出数据集中哪个观测值最接近某个时间,比如说“09:58:13”。我怎样才能在Rstudio中做到这一点


我尝试将值“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"