Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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_Format_Lookup_Between - Fatal编程技术网

R 如果在两次之间,如何从另一个表返回值?

R 如果在两次之间,如何从另一个表返回值?,r,format,lookup,between,R,Format,Lookup,Between,我有一个数据集,用于查看特定“运行”发生的时间。这是数据集的head() time <- c(15:27.7, 15:27.7, 15:27.8, 15:27.9, 15:28.0) 我相信我可能需要改变《泰晤士报》的格式,但也不知道如何做到这一点 任何帮助都将不胜感激 是-您必须将所有“时间”(看起来像查找表中的因子)转换为日期/时间或“POSIXct”类对象,以便随后可以查找值。as.POSIXct函数可以为您执行此操作 df$time2 <- as.POSIXct(df$t

我有一个数据集,用于查看特定“运行”发生的时间。这是数据集的head()

time <- c(15:27.7, 15:27.7, 15:27.8, 15:27.9, 15:28.0) 
我相信我可能需要改变《泰晤士报》的格式,但也不知道如何做到这一点


任何帮助都将不胜感激

是-您必须将所有“时间”(看起来像查找表中的因子)转换为日期/时间或“POSIXct”类对象,以便随后可以查找值。
as.POSIXct
函数可以为您执行此操作

df$time2 <- as.POSIXct(df$time, format="%M:%OS")
lkup$START <- as.POSIXct(lkup$START, format="%M:%OS")
lkup$END <- as.POSIXct(lkup$END, format="%M:%OS")

df$time2这些都是分:秒吗?这些是分、秒和毫秒。
  TIME     Run
1 15:27.7   1
2 15:27.7   1
3 15:27.8   1
4 15:27.9   1
5 15:28.0   1
df$time2 <- as.POSIXct(df$time, format="%M:%OS")
lkup$START <- as.POSIXct(lkup$START, format="%M:%OS")
lkup$END <- as.POSIXct(lkup$END, format="%M:%OS")
library(data.table)
setDT(lkup)[setDT(df), on=.(START<=time2, END>=time2), .(id, time, Run)]
   id    time Run
1:  1 15:27.7   1
2:  2 15:29.1   1
3:  3 20:32.3   2
4:  4 25:58.7   3
5:  5 17:53.9   4
df <- structure(list(id = 1:5, time = c("15:27.7", "15:29.1", "20:32.3", 
"25:58.7", "17:53.9")), class = "data.frame", row.names = c(NA, 
-5L))

  id    time
1  1 15:27.7
2  2 15:29.1
3  3 20:32.3
4  4 25:58.7
5  5 17:53.9 

lkup <- structure(list(START = c("15:27.7", "20:32.3", "25:57.3", "17:53.8"
), END = c("15:29.1", "20:37.3", "25:58.7", "17:54.0"), Run = 1:4), class = "data.frame", row.names = c("1", 
"2", "3", "4"))

    START     END Run
1 15:27.7 15:29.1   1
2 20:32.3 20:37.3   2
3 25:57.3 25:58.7   3
4 17:53.8 17:54.0   4