R查找最接近指定日期列的日期(之前)

时间:2018-07-18 23:08:29

标签: r

我正在尝试返回最接近(但在先)日期的列索引号。

nth :: Int -> [(Int,Int)] -> Int
nth n [] = error "??"
nth 0 (x:xs) = error "??"
nth n (x:xs)
  |n > 0 && n < length (x:xs) = -- dont know what to put here

在这种情况下,我希望Time1:Time3每行中日期的列索引最接近(但早于)时间K。新变量的目标输出为(2,1、3、1, 2)

3 个答案:

答案 0 :(得分:1)

for( i  in c(2:4)) {
   print(which.min(ifelse( (d[,1] - d[,i]) > 0 , (d[,1] - d[,i]),999999)))
}

答案 1 :(得分:1)

这是一个dplyr解决方案:

d  = d%>% mutate(rowid=1:n());
d1 = d %>% gather(TimeID,value,-c(rowid,TimeK)) %>% mutate(DateDiff = as.integer(TimeK-value))
d2 = d1 %>% group_by(rowid) %>% filter(DateDiff > 0);

# TimeID 
d2 %>% group_by(rowid) %>% arrange(DateDiff) %>% filter(1:n() == 1) %>% arrange(rowid) %>% select(TimeID)

答案 2 :(得分:0)

也许这段代码可以帮助您 我不太明白您在目标输出(2,1,3,1,2)中提到的内容

difftime(d[2,1],d[2,3], units="days")
#Time difference of 0 days