我正在尝试返回最接近(但在先)日期的列索引号。
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)
答案 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